<?xml version="1.0" encoding="UTF-8"?>
<model modelUID="r:67ec3cc1-add6-4e53-91a8-6b85e3c5de1c(ASN.typesystem)">
  <persistence version="3" />
  <refactoringHistory />
  <language namespace="7a5dda62-9140-4668-ab76-d5ed1746f2b2(jetbrains.mps.lang.typesystem)" />
  <language namespace="f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)" />
  <language namespace="83888646-71ce-4f1c-9c53-c54016f6ad4f(jetbrains.mps.baseLanguage.collections)" />
  <language namespace="fd392034-7849-419d-9071-12563d152375(jetbrains.mps.baseLanguage.closures)" />
  <language namespace="760a0a8c-eabb-4521-8bfd-65db761a9ba3(jetbrains.mps.baseLanguage.logging)" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959033d(jetbrains.mps.lang.annotations.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590334(jetbrains.mps.baseLanguage.closures.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590345(jetbrains.mps.lang.pattern.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902b4(jetbrains.mps.lang.typesystem.structure)" version="3" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902c1(jetbrains.mps.baseLanguage.constraints)" version="83" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902fb(jetbrains.mps.lang.smodel.constraints)" version="21" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902ae(jetbrains.mps.lang.typesystem.constraints)" version="17" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590283(jetbrains.mps.lang.core.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590301(jetbrains.mps.lang.smodel.structure)" version="16" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590338(jetbrains.mps.baseLanguage.closures.structure)" version="3" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959028c(jetbrains.mps.lang.structure.constraints)" version="11" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590292(jetbrains.mps.lang.structure.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902ca(jetbrains.mps.baseLanguage.structure)" version="3" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590340(jetbrains.mps.lang.pattern.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902db(jetbrains.mps.baseLanguage.blTypes.constraints)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959032e(jetbrains.mps.baseLanguage.collections.structure)" version="7" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959034b(jetbrains.mps.lang.quotation.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590328(jetbrains.mps.baseLanguage.collections.constraints)" version="6" />
  <languageAspect modelUID="r:a0195228-8fdd-4c86-b365-db9fe13c8098(ASN.structure)" version="4" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959057f(jetbrains.mps.baseLanguage.logging.structure)" version="0" />
  <devkit namespace="2677cb18-f558-4e33-bc38-a5139cee06dc(jetbrains.mps.devkit.language-design)" />
  <maxImportIndex value="7" />
  <import index="1" modelUID="r:a0195228-8fdd-4c86-b365-db9fe13c8098(ASN.structure)" version="4" />
  <import index="2" modelUID="f:java_stub#java.lang(java.lang@java_stub)" version="-1" />
  <import index="6" modelUID="f:java_stub#java.util(java.util@java_stub)" version="-1" />
  <import index="7" modelUID="f:java_stub#jetbrains.mps.typesystem.inference(jetbrains.mps.typesystem.inference@java_stub)" version="-1" />
  <visible index="2" modelUID="r:c1f894d1-f3b9-4d18-a511-78be0ad50d06(ASN.behavior)" />
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="2780958729117715300">
    <property name="name" value="typeof_IValueAssignment" />
    <property name="package" value="Assignments.ValueAssignment" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2780958729117715301">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="6366208545135465271">
        <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="6366208545135465272">
          <link role="baseMethodDeclaration" targetNodeId="2v.2872924673819609447" resolveInfo="reset" />
          <link role="classConcept" targetNodeId="2v.5312198670450954145" resolveInfo="TypesystemContext" />
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="6366208545135465254">
        <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="6366208545135465256">
          <link role="baseMethodDeclaration" targetNodeId="6366208545134351741" resolveInfo="checkValue" />
          <link role="classConcept" targetNodeId="2103069454648604109" resolveInfo="CheckingRules" />
          <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="6366208545135465258">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="6366208545135465257">
              <link role="applicableNode" targetNodeId="2780958729117715302" resolveInfo="valueAssignment" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="6366208545135465262">
              <link role="link" targetNodeId="1.9152698315526469694" />
            </node>
          </node>
          <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="6366208545135465265">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="6366208545135465264">
              <link role="applicableNode" targetNodeId="2780958729117715302" resolveInfo="valueAssignment" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="6366208545135465269">
              <link role="link" targetNodeId="1.9152698315526469695" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="2780958729117715302">
      <property name="name" value="valueAssignment" />
      <link role="concept" targetNodeId="1.9152698315526457500" resolveInfo="IValueAssignment" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4534048328789540594">
    <property name="name" value="typeof_FixedTypeValueFieldSpec" />
    <property name="package" value="ObjectClass.FieldSpecification" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4534048328789540595">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4534048328789540597">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4534048328789540601">
          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4534048328789540600">
            <link role="applicableNode" targetNodeId="4534048328789540596" resolveInfo="spec" />
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="4534048328789540605">
            <link role="property" targetNodeId="1.5019664383912897434" resolveInfo="defaultMark" />
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4534048328789540599">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2118074201062042132">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="2118074201062042134">
              <link role="baseMethodDeclaration" targetNodeId="6366208545134351741" resolveInfo="checkValue" />
              <link role="classConcept" targetNodeId="2103069454648604109" resolveInfo="CheckingRules" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2118074201062042136">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2118074201062042135">
                  <link role="applicableNode" targetNodeId="4534048328789540596" resolveInfo="spec" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2118074201062042140">
                  <link role="link" targetNodeId="1.1678051738086445234" />
                </node>
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2118074201062042143">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2118074201062042142">
                  <link role="applicableNode" targetNodeId="4534048328789540596" resolveInfo="spec" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2118074201062112490">
                  <link role="link" targetNodeId="1.5019664383909669862" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4534048328789540596">
      <property name="name" value="spec" />
      <link role="concept" targetNodeId="1.1678051738086112479" resolveInfo="FixedTypeValueFieldSpec" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4534048328790900753">
    <property name="name" value="typeof_ExceptionSpec" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4534048328790900754">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4534048328790900756">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4534048328790900758">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4534048328790900795">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4534048328790900798">
              <property name="value" value="Value must be integer" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4534048328790900799">
              <link role="applicableNode" targetNodeId="4534048328790900755" resolveInfo="spec" />
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4534048328790900777">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4534048328790900780">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4534048328790900788">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4534048328790900783">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4534048328790900782">
                  <link role="applicableNode" targetNodeId="4534048328790900755" resolveInfo="spec" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4534048328790900787">
                  <link role="link" targetNodeId="1.2229019017267610003" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4534048328790900792">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4534048328790900794">
                  <link role="conceptDeclaration" targetNodeId="1.1678051738083057375" resolveInfo="IntegerValue" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4534048328790900765">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4534048328790900760">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4534048328790900759">
                <link role="applicableNode" targetNodeId="4534048328790900755" resolveInfo="spec" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4534048328790900764">
                <link role="link" targetNodeId="1.2229019017267610001" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNullOperation" id="4534048328790900770" />
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4534048328790900755">
      <property name="name" value="spec" />
      <link role="concept" targetNodeId="1.7534685045991855434" resolveInfo="ExceptionSpec" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4534048328793963383">
    <property name="name" value="typeof_IObjectAssignment" />
    <property name="package" value="Assignments.ObjectAssignment" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4534048328793963384">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2103069454648604265">
        <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="2103069454648604267">
          <link role="baseMethodDeclaration" targetNodeId="2103069454648604115" resolveInfo="checkObject" />
          <link role="classConcept" targetNodeId="2103069454648604109" resolveInfo="CheckingRules" />
          <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2103069454648604268">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2103069454648604269">
              <link role="applicableNode" targetNodeId="4534048328793963385" resolveInfo="objectAssignment" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2103069454648604270">
              <link role="link" targetNodeId="1.9152698315526579980" />
            </node>
          </node>
          <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2103069454648604273">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2103069454648604272">
              <link role="applicableNode" targetNodeId="4534048328793963385" resolveInfo="objectAssignment" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2103069454648604277">
              <link role="link" targetNodeId="1.9152698315526579981" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4534048328793963385">
      <property name="name" value="objectAssignment" />
      <link role="concept" targetNodeId="1.1609738566719872837" resolveInfo="IObjectAssignment" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="256349686874794635">
    <property name="name" value="typeof_ComponentType" />
    <property name="package" value="Lists.ComponentTypeList" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="256349686874794636">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="687424318636420982">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="687424318636420983">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="687424318636420994">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="687424318636420995">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2413662036483613046">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2413662036483613047">
                  <property name="name" value="refType" />
                  <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="2413662036483613048">
                    <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                    <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2413662036483613050">
                      <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                    </node>
                  </node>
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="2413662036483613052">
                    <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="2413662036483613054">
                      <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                      <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="2413662036483613055" />
                      <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2413662036483613059">
                        <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2413662036483613063">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2413662036483613064">
                  <property name="name" value="validationResult" />
                  <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="2413662036483613065">
                    <link role="classifier" targetNodeId="2v.9152698315530103301" resolveInfo="EntityValidationResult" />
                  </node>
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613067">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613068">
                      <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2413662036483613069">
                        <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2413662036483613070">
                        <link role="link" targetNodeId="1.5108187754403599132" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="2413662036483613071">
                      <link role="baseMethodDeclaration" targetNodeId="2v.1048767958318510015" resolveInfo="getUnwrappedType" />
                      <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2413662036483613074">
                        <link role="variableDeclaration" targetNodeId="2413662036483613047" resolveInfo="refType" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="8576635178873576982" />
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2413662036483613076">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2413662036483613077">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2413662036483613092">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2413662036483613093">
                      <property name="name" value="type" />
                      <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2413662036483613094">
                        <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                      </node>
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613143">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2413662036483613140">
                          <link role="variableDeclaration" targetNodeId="2413662036483613047" resolveInfo="refType" />
                        </node>
                        <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="7323414590763169371">
                          <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2413662036483613095">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2413662036483613096">
                      <property name="name" value="componentTypeList" />
                      <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2413662036483613097">
                        <link role="concept" targetNodeId="1.6781117154622660736" resolveInfo="ComponentTypeList" />
                      </node>
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613098">
                        <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2413662036483613099">
                          <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="2413662036483613100">
                          <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="2413662036483613101">
                            <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="6781117154623144341">
                              <link role="conceptDeclaration" targetNodeId="1.6781117154622660736" resolveInfo="ComponentTypeList" />
                            </node>
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="8576635178871286782" />
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2413662036483613104">
                    <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2413662036483613105">
                      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2413662036483613106">
                        <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2413662036483613107">
                          <property name="value" value="Sequence type expected" />
                        </node>
                        <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613108">
                          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2413662036483613109">
                            <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2413662036483613110">
                            <link role="link" targetNodeId="1.5108187754403599132" />
                          </node>
                        </node>
                      </node>
                    </node>
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2413662036483613111">
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613112">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2413662036483613113">
                          <link role="variableDeclaration" targetNodeId="2413662036483613096" resolveInfo="componentTypeList" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2413662036483613114">
                          <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2413662036483613115">
                            <link role="conceptDeclaration" targetNodeId="1.2745703621025106475" resolveInfo="SequenceType" />
                          </node>
                        </node>
                      </node>
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2413662036483613116">
                        <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613117">
                          <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2413662036483613118">
                            <link role="variableDeclaration" targetNodeId="2413662036483613093" resolveInfo="type" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2413662036483613119">
                            <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2413662036483613120">
                              <link role="conceptDeclaration" targetNodeId="1.2745703621025106475" resolveInfo="SequenceType" />
                            </node>
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="2413662036483613121" />
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2413662036483613122">
                    <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2413662036483613123">
                      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2413662036483613124">
                        <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2413662036483613125">
                          <property name="value" value="Set type expected" />
                        </node>
                        <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613126">
                          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2413662036483613127">
                            <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2413662036483613128">
                            <link role="link" targetNodeId="1.5108187754403599132" />
                          </node>
                        </node>
                      </node>
                    </node>
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2413662036483613129">
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613130">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2413662036483613131">
                          <link role="variableDeclaration" targetNodeId="2413662036483613096" resolveInfo="componentTypeList" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2413662036483613132">
                          <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2413662036483613133">
                            <link role="conceptDeclaration" targetNodeId="1.2917342674763025269" resolveInfo="SetType" />
                          </node>
                        </node>
                      </node>
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2413662036483613134">
                        <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613135">
                          <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2413662036483613136">
                            <link role="variableDeclaration" targetNodeId="2413662036483613093" resolveInfo="type" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2413662036483613137">
                            <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2413662036483613138">
                              <link role="conceptDeclaration" targetNodeId="1.2917342674763025269" resolveInfo="SetType" />
                            </node>
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2413662036483613083">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2413662036483613080">
                    <link role="variableDeclaration" targetNodeId="2413662036483613064" resolveInfo="validationResult" />
                  </node>
                  <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="2413662036483613089">
                    <link role="baseMethodDeclaration" targetNodeId="2v.867789194271762934" resolveInfo="isSuccess" />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="1048767958316301607">
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="1048767958316192906">
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="687424318636421048">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="687424318636421049">
                    <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="687424318636421050">
                      <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="687424318636421051">
                      <link role="property" targetNodeId="1.5108187754403599168" resolveInfo="isNamedType" />
                    </node>
                  </node>
                </node>
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1048767958316301620">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1048767958316301613">
                    <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1048767958316301611">
                      <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1048767958316301618">
                      <link role="link" targetNodeId="1.5108187754403599132" />
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="1048767958316301625" />
                </node>
              </node>
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" id="1048767958316192923">
                <node role="rightExpression" type="jetbrains.mps.lang.smodel.structure.ConceptRefExpression" id="1048767958316192927">
                  <link role="conceptDeclaration" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                </node>
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1048767958316192915">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1048767958316192910">
                    <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1048767958316192909">
                      <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1048767958316192914">
                      <link role="link" targetNodeId="1.5108187754403599132" />
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetConceptOperation" id="1048767958316192919" />
                </node>
              </node>
            </node>
            <node role="elsifClauses" type="jetbrains.mps.baseLanguage.structure.ElsifClause" id="687424318636421055">
              <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="687424318636421059">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="687424318636421058">
                  <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="687424318636421063">
                  <link role="property" targetNodeId="1.9152698315513297811" resolveInfo="isDefaultValuePresent" />
                </node>
              </node>
              <node role="statementList" type="jetbrains.mps.baseLanguage.structure.StatementList" id="687424318636421057">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="3788351217583291158">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="3788351217583291160">
                    <link role="baseMethodDeclaration" targetNodeId="6366208545134351741" resolveInfo="checkValue" />
                    <link role="classConcept" targetNodeId="2103069454648604109" resolveInfo="CheckingRules" />
                    <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3788351217583291167">
                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3788351217583291162">
                        <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3788351217583291161">
                          <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3788351217583291166">
                          <link role="link" targetNodeId="1.5108187754404366382" />
                        </node>
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3788351217583291171">
                        <link role="link" targetNodeId="1.7534685045991864889" />
                      </node>
                    </node>
                    <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3788351217583291174">
                      <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3788351217583291173">
                        <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3788351217583291178">
                        <link role="link" targetNodeId="1.5108187754403599148" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="687424318636420987">
          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="687424318636420986">
            <link role="applicableNode" targetNodeId="256349686874794637" resolveInfo="componentType" />
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="687424318636420991">
            <link role="property" targetNodeId="1.9020003798796524378" resolveInfo="isConstructed" />
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="256349686874794637">
      <property name="name" value="componentType" />
      <link role="concept" targetNodeId="1.5108187754403599129" resolveInfo="ComponentType" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="7793031572832812813">
    <property name="name" value="typeof_OpenTypeFieldValue" />
    <property name="package" value="BuiltinValue" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7793031572832812814">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8479206315890171468">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8479206315890171469">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="5430715052355783984">
            <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="5430715052355783993">
              <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355783995">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355783994">
                  <link role="applicableNode" targetNodeId="7793031572832812815" resolveInfo="openTypeFieldValue" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="5430715052355783999">
                  <link role="link" targetNodeId="1.7793031572832809339" />
                </node>
              </node>
            </node>
            <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="5430715052355783987">
              <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355783981">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355783982">
                  <link role="applicableNode" targetNodeId="7793031572832812815" resolveInfo="openTypeFieldValue" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="5430715052355783983">
                  <link role="link" targetNodeId="1.7793031572832809338" />
                </node>
              </node>
            </node>
            <node role="nodeToCheck" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8479206315890590570">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8479206315890588032">
                <link role="applicableNode" targetNodeId="7793031572832812815" resolveInfo="openTypeFieldValue" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8479206315890590574">
                <link role="link" targetNodeId="1.7793031572832809339" />
              </node>
            </node>
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8479206315890590582">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8479206315890590585">
                <property name="value" value=" value is expected" />
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8479206315890590577">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8479206315890590576">
                  <link role="applicableNode" targetNodeId="7793031572832812815" resolveInfo="openTypeFieldValue" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8479206315890590581">
                  <link role="link" targetNodeId="1.7793031572832809338" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4787660408158521696">
          <node role="rightExpression" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="4787660408158521699">
            <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
            <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
            <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4787660408158521702">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4787660408158521701">
                <link role="applicableNode" targetNodeId="7793031572832812815" resolveInfo="openTypeFieldValue" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4787660408158521716">
                <link role="link" targetNodeId="1.7793031572832809339" />
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="4787660408158521689">
            <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
            <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
            <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4787660408158521691">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4787660408158521690">
                <link role="applicableNode" targetNodeId="7793031572832812815" resolveInfo="openTypeFieldValue" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4787660408158521695">
                <link role="link" targetNodeId="1.7793031572832809338" />
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="7793031572832812815">
      <property name="name" value="openTypeFieldValue" />
      <link role="concept" targetNodeId="1.7793031572832809336" resolveInfo="OpenTypeFieldValue" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="7784030075848265779">
    <property name="name" value="typeof_FieldSetting" />
    <property name="package" value="Object.DefaultSyntax" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7784030075848265780">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3310844120967286194">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120967286195">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="3310844120967356567">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="3310844120967356570">
              <property name="value" value="object set expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356572">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967356571">
                <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120967356576">
                <link role="link" targetNodeId="1.3310844120966373350" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="3310844120967356597" />
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="3310844120967356546">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="3310844120967356549">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356559">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356552">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967356551">
                  <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120967356556">
                  <link role="link" targetNodeId="1.3310844120966373350" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="3310844120967356563">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3310844120967356565">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966299524" resolveInfo="ObjectSetSetting" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967286199">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967286198">
              <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="3310844120967286203">
              <link role="baseMethodDeclaration" targetNodeId="2v.8251251793605417833" resolveInfo="isObjectSetFieldSpec" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="3310844120967356577" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3310844120967356578">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120967356579">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="3310844120967356580">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="3310844120967356581">
              <property name="value" value="object expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356582">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967356583">
                <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120967356584">
                <link role="link" targetNodeId="1.3310844120966373350" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="3310844120967356599" />
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="3310844120967356585">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="3310844120967356586">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356587">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356588">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967356589">
                  <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120967356590">
                  <link role="link" targetNodeId="1.3310844120966373350" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="3310844120967356591">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3310844120967356602">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966299519" resolveInfo="ObjectSetting" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356593">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967356594">
              <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="3310844120967356601">
              <link role="baseMethodDeclaration" targetNodeId="2v.8251251793605417822" resolveInfo="isObjectFieldSpec" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="3310844120967356600" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3310844120967356605">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120967356606">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="3310844120967356607">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="3310844120967356608">
              <property name="value" value="type expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356609">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967356610">
                <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120967356611">
                <link role="link" targetNodeId="1.3310844120966373350" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="3310844120967356612" />
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="3310844120967356613">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="3310844120967356614">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356615">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356616">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967356617">
                  <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120967356618">
                  <link role="link" targetNodeId="1.3310844120966373350" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="3310844120967356619">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3310844120967356625">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966287312" resolveInfo="TypeSetting" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120967356621">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120967356622">
              <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="3310844120967356624">
              <link role="baseMethodDeclaration" targetNodeId="2v.8251251793605417771" resolveInfo="isTypeFieldSpec" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="3310844120967356604" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="7784030075848265782">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2103069454648722533">
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7784030075848265786">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7784030075848265785">
              <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="7784030075848265790">
              <link role="baseMethodDeclaration" targetNodeId="2v.8251251793605417782" resolveInfo="isValueFieldSpec" />
            </node>
          </node>
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2103069454648722539">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2103069454648722540">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2103069454648722541">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2103069454648722542">
                  <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2103069454648722543">
                  <link role="link" targetNodeId="1.3310844120966373350" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2103069454648722544">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2103069454648722545">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966299508" resolveInfo="ValueSetting" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7784030075848265784">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2103069454648722546">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2103069454648722547">
              <property name="value" value="value expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2103069454648722548">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2103069454648722549">
                <link role="applicableNode" targetNodeId="7784030075848265781" resolveInfo="fieldSetting" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2103069454648722550">
                <link role="link" targetNodeId="1.3310844120966373350" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2103069454648722551" />
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="7784030075848265781">
      <property name="name" value="fieldSetting" />
      <link role="concept" targetNodeId="1.1678051738093708054" resolveInfo="FieldSetting" />
    </node>
  </node>
  <visible index="3" modelUID="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" />
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="1550044753964056993">
    <property name="name" value="typeof_ValueReference" />
    <property name="package" value="BuiltinValue.ReferencedValue" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1550044753964056994">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1550044753964056996">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1550044753964056997">
          <property name="name" value="isParameterizedType" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="1550044753964056998" />
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753964056999">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753964057000">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1550044753964057047">
                <link role="applicableNode" targetNodeId="1550044753964056995" resolveInfo="valueReference" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="1550044753964057002" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1550044753964057003">
              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="5430715052355568232">
                <link role="conceptDeclaration" targetNodeId="1.5430715052355518204" resolveInfo="IParameterized" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1550044753964057052">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1550044753964057053">
          <property name="name" value="refValue" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="1550044753964057054">
            <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
            <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="1550044753964057056">
              <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="Value" />
            </node>
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="1550044753964057058">
            <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="1550044753964063201">
              <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
              <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="1550044753964063203">
                <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="Value" />
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="1550044753964063204" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1550044753966149212">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1550044753966149213">
          <property name="name" value="result" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="1550044753966149214">
            <link role="classifier" targetNodeId="2v.9152698315530103301" resolveInfo="ValueValidationResult" />
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149216">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1550044753966149217">
              <link role="applicableNode" targetNodeId="1550044753964056995" resolveInfo="valueReference" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="1550044753966149218">
              <link role="baseMethodDeclaration" targetNodeId="2v.5430715052355568252" resolveInfo="getRootValue" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149219">
                <link role="variableDeclaration" targetNodeId="1550044753964057053" resolveInfo="refValue" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="1550044753966149221" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1550044753966149223">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1550044753966149224">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1550044753966149238">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1550044753966149239">
              <property name="name" value="parameterizedAssignment" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="1550044753966149240">
                <link role="concept" targetNodeId="1.8372054433699552952" resolveInfo="IParameterizedAssignment" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149241">
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="1550044753966149242">
                  <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="1550044753966149243">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1550044753966149244">
                      <link role="conceptDeclaration" targetNodeId="1.8372054433699552952" resolveInfo="IParameterizedAssignment" />
                    </node>
                  </node>
                </node>
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149245">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149246">
                    <link role="variableDeclaration" targetNodeId="1550044753964057053" resolveInfo="refValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="1550044753966149247">
                    <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="1550044753966149248" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1550044753966149249">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1550044753966149250">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="1550044753966149251">
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="1550044753966149252">
                  <property name="value" value="Parameter list unexpected" />
                </node>
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1550044753966149253">
                  <link role="applicableNode" targetNodeId="1550044753964056995" resolveInfo="valueReference" />
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="1550044753966149254">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149255">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149256">
                  <link role="variableDeclaration" targetNodeId="1550044753966149239" resolveInfo="parameterizedAssignment" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNullOperation" id="1550044753966149257" />
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149258">
                <link role="variableDeclaration" targetNodeId="1550044753964056997" resolveInfo="isParameterizedType" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="1550044753966149259" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1550044753966149260">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1550044753966149261">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="1550044753966149262">
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="1550044753966149263">
                  <property name="value" value="Parameter list expected" />
                </node>
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1550044753966149264">
                  <link role="applicableNode" targetNodeId="1550044753964056995" resolveInfo="valueReference" />
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="1550044753966149265">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149266">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149267">
                  <link role="variableDeclaration" targetNodeId="1550044753966149239" resolveInfo="parameterizedAssignment" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="1550044753966149268" />
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="1550044753966149269">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149270">
                  <link role="variableDeclaration" targetNodeId="1550044753964056997" resolveInfo="isParameterizedType" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="8600224617540520883">
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" id="8600224617540520889">
            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="8600224617540520892" />
            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540520886">
              <link role="variableDeclaration" targetNodeId="1550044753966149213" resolveInfo="result" />
            </node>
          </node>
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149230">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149227">
              <link role="variableDeclaration" targetNodeId="1550044753966149213" resolveInfo="result" />
            </node>
            <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="1550044753966149236">
              <link role="baseMethodDeclaration" targetNodeId="2v.867789194271762934" resolveInfo="isSuccess" />
            </node>
          </node>
        </node>
        <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="1550044753966149272">
          <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1550044753966149273">
            <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="1550044753966149277">
              <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="1550044753966149278">
                <property name="name" value="message" />
              </node>
              <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149279">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149280">
                  <link role="variableDeclaration" targetNodeId="1550044753966149213" resolveInfo="result" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="1550044753966149281">
                  <link role="baseMethodDeclaration" targetNodeId="2v.2335512627510584115" resolveInfo="getMessages" />
                </node>
              </node>
              <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1550044753966149282">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1550044753966149283">
                  <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1550044753966149284">
                    <property name="name" value="errorNode" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="1550044753966149285">
                      <link role="concept" targetNodeId="3v.1133920641626" resolveInfo="BaseConcept" />
                    </node>
                    <node role="initializer" type="jetbrains.mps.baseLanguage.structure.TernaryOperatorExpression" id="1550044753966149286">
                      <node role="ifFalse" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1550044753966149332">
                        <link role="applicableNode" targetNodeId="1550044753964056995" resolveInfo="valueReference" />
                      </node>
                      <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149288">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149289">
                          <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1550044753966149290">
                            <link role="variable" targetNodeId="1550044753966149278" resolveInfo="message" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1550044753966149291">
                            <link role="link" targetNodeId="1.7092140500374256327" />
                          </node>
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="1550044753966149292" />
                      </node>
                      <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149293">
                        <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1550044753966149294">
                          <link role="variable" targetNodeId="1550044753966149278" resolveInfo="message" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1550044753966149295">
                          <link role="link" targetNodeId="1.7092140500374256327" />
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="1550044753966149296" />
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1550044753966149297">
                  <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1550044753966149298">
                    <node role="statement" type="jetbrains.mps.lang.typesystem.structure.WarningStatement" id="1550044753966149299">
                      <node role="warningText" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149300">
                        <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1550044753966149301">
                          <link role="variable" targetNodeId="1550044753966149278" resolveInfo="message" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="1550044753966149302">
                          <link role="property" targetNodeId="1.5889530995291333448" resolveInfo="message" />
                        </node>
                      </node>
                      <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149303">
                        <link role="variableDeclaration" targetNodeId="1550044753966149284" resolveInfo="errorNode" />
                      </node>
                    </node>
                  </node>
                  <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149304">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149305">
                      <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1550044753966149306">
                        <link role="variable" targetNodeId="1550044753966149278" resolveInfo="message" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="1550044753966149307">
                        <link role="property" targetNodeId="1.2335512627509510352" resolveInfo="priority" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Property_HasValue_Enum" id="1550044753966149308">
                      <node role="value" type="jetbrains.mps.lang.smodel.structure.EnumMemberReference" id="1550044753966149309">
                        <link role="enumMember" targetNodeId="1.2335512627509510355" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1550044753966149310">
                  <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1550044753966149311">
                    <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="1550044753966149312">
                      <node role="errorString" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149313">
                        <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1550044753966149314">
                          <link role="variable" targetNodeId="1550044753966149278" resolveInfo="message" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="1550044753966149315">
                          <link role="property" targetNodeId="1.5889530995291333448" resolveInfo="message" />
                        </node>
                      </node>
                      <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1550044753966149316">
                        <link role="variableDeclaration" targetNodeId="1550044753966149284" resolveInfo="errorNode" />
                      </node>
                    </node>
                  </node>
                  <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149317">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1550044753966149318">
                      <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1550044753966149319">
                        <link role="variable" targetNodeId="1550044753966149278" resolveInfo="message" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="1550044753966149320">
                        <link role="property" targetNodeId="1.2335512627509510352" resolveInfo="priority" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Property_HasValue_Enum" id="1550044753966149321">
                      <node role="value" type="jetbrains.mps.lang.smodel.structure.EnumMemberReference" id="1550044753966149322">
                        <link role="enumMember" targetNodeId="1.2335512627509510356" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="1550044753964056995">
      <property name="name" value="valueReference" />
      <link role="concept" targetNodeId="1.4056456322103907495" resolveInfo="ValueReference" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="8576635178877269183">
    <property name="name" value="ParameterType" />
    <property name="package" value="Lists.ParameterList" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877269192">
      <property name="name" value="actualTypeParameter" />
      <link role="concept" targetNodeId="1.7784030075846972861" resolveInfo="ActualTypeParameter" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8576635178877269185" />
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877269191">
      <property name="name" value="parameterType" />
      <link role="concept" targetNodeId="1.6716628601968810582" resolveInfo="ParameterType" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="8576635178877287820">
    <property name="package" value="Lists.ParameterList" />
    <property name="name" value="ParameterNamedObject" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877287825">
      <property name="name" value="actualObjectParameter" />
      <link role="concept" targetNodeId="1.7784030075847369817" resolveInfo="ActualObjectParameter" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8576635178877287822" />
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877287824">
      <property name="name" value="parameterNamedObject" />
      <link role="concept" targetNodeId="1.4534048328796967419" resolveInfo="ParameterNamedObject" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="8576635178877287826">
    <property name="package" value="Lists.ParameterList" />
    <property name="name" value="ParameterNamedObjectSet" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877287831">
      <property name="name" value="actualObjectSetParameter" />
      <link role="concept" targetNodeId="1.7784030075847369842" resolveInfo="ActualObjectSetParameter" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8576635178877287828" />
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877287830">
      <property name="name" value="parameterNamedObjectSet" />
      <link role="concept" targetNodeId="1.1919761619489446157" resolveInfo="ParameterNamedObjectSet" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="8576635178877287832">
    <property name="package" value="Lists.ParameterList" />
    <property name="name" value="ParameterNamedValue" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877287837">
      <property name="name" value="actualValueParameter" />
      <link role="concept" targetNodeId="1.7784030075847369830" resolveInfo="ActualValueParameter" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8576635178877287834">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4135453859678748856">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4135453859678748857">
          <property name="name" value="type" />
          <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4135453859678748858">
            <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859678748862">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4135453859678748861">
              <link role="applicableNode" targetNodeId="8576635178877287836" resolveInfo="parameterNamedValue" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4135453859678748866">
              <link role="link" targetNodeId="1.1919761619489446117" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4135453859678748868">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4135453859678748869">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4135453859678748895">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4135453859678748896">
              <property name="name" value="entity" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4135453859678748897">
                <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="4135453859678748898">
                <link role="classConcept" targetNodeId="2v.5312198670450954145" resolveInfo="TypesystemContext" />
                <link role="baseMethodDeclaration" targetNodeId="2v.5312198670451137563" resolveInfo="resolve" />
                <node role="actualArgument" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="4135453859678748921">
                  <link role="concept" targetNodeId="1.4056456322105275461" resolveInfo="TypeParameterReference" />
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4135453859678748920">
                    <link role="variableDeclaration" targetNodeId="4135453859678748857" resolveInfo="type" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="4135453859678748900" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4135453859678748901">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4135453859678748902">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="4135453859678748903">
                <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="4135453859678748924">
                  <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859678748926">
                    <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4135453859678748925">
                      <link role="applicableNode" targetNodeId="8576635178877287837" resolveInfo="actualValueParameter" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4135453859678748930">
                      <link role="link" targetNodeId="1.7784030075847369832" />
                    </node>
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="4135453859678748906">
                  <node role="normalType" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4135453859678748907">
                    <link role="variableDeclaration" targetNodeId="4135453859678748896" resolveInfo="entity" />
                  </node>
                </node>
                <node role="nodeToCheck" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859678748935">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4135453859678748931">
                    <link role="applicableNode" targetNodeId="8576635178877287837" resolveInfo="actualValueParameter" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4135453859678748939">
                    <link role="link" targetNodeId="1.7784030075847369832" />
                  </node>
                </node>
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4135453859678748909">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4135453859678748910">
                    <property name="value" value=" value is expected" />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4135453859678748911">
                    <link role="variableDeclaration" targetNodeId="4135453859678748896" resolveInfo="entity" />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859678748912">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4135453859678748913">
                <link role="variableDeclaration" targetNodeId="4135453859678748896" resolveInfo="entity" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4135453859678748914" />
            </node>
            <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="4135453859678748915">
              <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4135453859678748916">
                <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4135453859678748917">
                  <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4135453859678748918">
                    <property name="value" value="Cannot reslove actual type" />
                  </node>
                  <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4135453859678748940">
                    <link role="applicableNode" targetNodeId="8576635178877287837" resolveInfo="actualValueParameter" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859678748873">
          <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4135453859678748872">
            <link role="variableDeclaration" targetNodeId="4135453859678748857" resolveInfo="type" />
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4135453859678748877">
            <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4135453859678748879">
              <link role="conceptDeclaration" targetNodeId="1.4056456322105275461" resolveInfo="TypeParameterReference" />
            </node>
          </node>
        </node>
        <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="4135453859678748880">
          <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4135453859678748881">
            <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="8004792857514579025">
              <property name="checkOnly" value="false" />
              <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="8004792857514579033">
                <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8004792857514579035">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8004792857514579034">
                    <link role="applicableNode" targetNodeId="8576635178877287837" resolveInfo="actualValueParameter" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4135453859678629372">
                    <link role="link" targetNodeId="1.7784030075847369832" />
                  </node>
                </node>
              </node>
              <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="8004792857514579028">
                <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8004792857514579020">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8004792857514579019">
                    <link role="applicableNode" targetNodeId="8576635178877287836" resolveInfo="parameterNamedValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4135453859678629371">
                    <link role="link" targetNodeId="1.1919761619489446117" />
                  </node>
                </node>
              </node>
              <node role="nodeToCheck" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859678400628">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8004792857514693308">
                  <link role="applicableNode" targetNodeId="8576635178877287837" resolveInfo="actualValueParameter" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4135453859678400632">
                  <link role="link" targetNodeId="1.7784030075847369832" />
                </node>
              </node>
              <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8004792857514693321">
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8004792857514693324">
                  <property name="value" value=" value is expected" />
                </node>
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8004792857514693316">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8004792857514693315">
                    <link role="applicableNode" targetNodeId="8576635178877287836" resolveInfo="parameterNamedValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8004792857514693320">
                    <link role="link" targetNodeId="1.1919761619489446117" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877287836">
      <property name="name" value="parameterNamedValue" />
      <link role="concept" targetNodeId="1.1919761619489446115" resolveInfo="ParameterNamedValue" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="8576635178877287838">
    <property name="package" value="Lists.ParameterList" />
    <property name="name" value="ParameterObjectClass" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877287843">
      <property name="name" value="actualDefinedObjectClassParameter" />
      <link role="concept" targetNodeId="1.7784030075847351718" resolveInfo="ActualDefinedObjectClassParameter" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8576635178877287840" />
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8576635178877287842">
      <property name="name" value="parameterObjectClass" />
      <link role="concept" targetNodeId="1.1919761619489446141" resolveInfo="ParameterObjectClass" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="5430715052355518013">
    <property name="name" value="typeof_IAssignmentEntityReference" />
    <property name="package" value="Assignments.Base" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355518014">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2513739629892609797">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2513739629892609798">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2513739629892609825">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2513739629892609826">
              <property name="name" value="isParameterizedType" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="2513739629892609827" />
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2513739629892609840">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2513739629892609830">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2513739629892609829">
                    <link role="applicableNode" targetNodeId="5430715052355518015" resolveInfo="reference" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2513739629892609834">
                    <link role="link" targetNodeId="1.5430715052355517996" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2513739629892609844">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2513739629892609865">
                    <link role="conceptDeclaration" targetNodeId="1.8372054433699552952" resolveInfo="IParameterizedAssignment" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2513739629892609848">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2513739629892609849">
              <property name="name" value="isParametersPresent" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="2513739629892609850" />
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2513739629892609858">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2513739629892609853">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2513739629892609852">
                    <link role="applicableNode" targetNodeId="5430715052355518015" resolveInfo="reference" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="2513739629892609857" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2513739629892609862">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2513739629892609864">
                    <link role="conceptDeclaration" targetNodeId="1.5430715052355518204" resolveInfo="IParameterized" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="2513739629892609866" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2513739629892609869">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2513739629892609870">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2513739629892609880">
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2513739629892609884">
                  <link role="applicableNode" targetNodeId="5430715052355518015" resolveInfo="reference" />
                </node>
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2513739629892609883">
                  <property name="value" value="Parameter list expected" />
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2513739629892609874">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2513739629892609877">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2513739629892609879">
                  <link role="variableDeclaration" targetNodeId="2513739629892609849" resolveInfo="isParametersPresent" />
                </node>
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2513739629892609873">
                <link role="variableDeclaration" targetNodeId="2513739629892609826" resolveInfo="isParameterizedType" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="2513739629892609885" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2513739629892609887">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2513739629892609888">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2513739629892609898">
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2513739629892609901">
                  <property name="value" value="Parameter list unexpected" />
                </node>
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2513739629892609902">
                  <link role="applicableNode" targetNodeId="5430715052355518015" resolveInfo="reference" />
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2513739629892609894">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2513739629892609897">
                <link role="variableDeclaration" targetNodeId="2513739629892609849" resolveInfo="isParametersPresent" />
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2513739629892609891">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2513739629892609893">
                  <link role="variableDeclaration" targetNodeId="2513739629892609826" resolveInfo="isParameterizedType" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2513739629892609811">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2513739629892609820">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2513739629892609815">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2513739629892609814">
                <link role="applicableNode" targetNodeId="5430715052355518015" resolveInfo="reference" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2513739629892609819">
                <link role="link" targetNodeId="1.5430715052355517996" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="2513739629892609824" />
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2513739629892609802">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2513739629892609801">
              <link role="applicableNode" targetNodeId="5430715052355518015" resolveInfo="reference" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="2513739629892609807" />
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="5430715052355518015">
      <property name="name" value="reference" />
      <link role="concept" targetNodeId="1.5430715052355517916" resolveInfo="IAssignmentEntityReference" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="5430715052355518432">
    <property name="name" value="typeof_IParameterized" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355518433">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="7463838306356173932">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7463838306356173933">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7463838306356173956">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356173957">
              <property name="name" value="refEntity" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="7463838306356173958">
                <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7463838306356173959">
                  <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
                </node>
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="7463838306356173960">
                <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="7463838306356173961">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="7463838306356173962" />
                  <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7463838306356173963">
                    <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="7463838306356173964" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="7463838306356173965">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356173966">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7463838306356173967">
                <link role="applicableNode" targetNodeId="5430715052355518434" resolveInfo="parameterized" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="7463838306356173968">
                <link role="baseMethodDeclaration" targetNodeId="2v.4135453859676782729" resolveInfo="createContext" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="7463838306356173969" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7463838306356173970">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356173971">
              <property name="name" value="result" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="7463838306356173972">
                <link role="classifier" targetNodeId="2v.9152698315530103301" resolveInfo="EntityValidationResult" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356173973">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356173974">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7463838306356173975">
                    <link role="applicableNode" targetNodeId="5430715052355518434" resolveInfo="parameterized" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="7463838306356173976">
                    <link role="link" targetNodeId="1.5430715052355518123" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="7463838306356173977">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5430715052355429027" resolveInfo="getUnwrappedEntity" />
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356173978">
                    <link role="variableDeclaration" targetNodeId="7463838306356173957" resolveInfo="refEntity" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="7463838306356173979">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7463838306356173980">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7463838306356173981">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356173982">
                  <property name="name" value="entity" />
                  <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7463838306356173983">
                    <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
                  </node>
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356173984">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356173985">
                      <link role="variableDeclaration" targetNodeId="7463838306356173957" resolveInfo="refEntity" />
                    </node>
                    <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="7463838306356173986">
                      <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="7463838306356173987">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7463838306356173988">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7463838306356173989">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356173990">
                      <property name="name" value="formalParameterList" />
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356173991">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356173992">
                          <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="7463838306356173993">
                            <link role="concept" targetNodeId="1.8372054433699552952" resolveInfo="IParameterizedAssignment" />
                            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356173994">
                              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356173995">
                                <link role="variableDeclaration" targetNodeId="7463838306356173982" resolveInfo="entity" />
                              </node>
                              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="7463838306356173996" />
                            </node>
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="7463838306356173997">
                            <link role="link" targetNodeId="1.7585540365178075087" />
                          </node>
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="7463838306356173998">
                          <link role="link" targetNodeId="1.1839742443506681638" />
                        </node>
                      </node>
                      <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="7463838306356173999">
                        <link role="elementConcept" targetNodeId="1.1839742443506681637" resolveInfo="IParameter" />
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7463838306356174000">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356174001">
                      <property name="name" value="actualParameterList" />
                      <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="7463838306356174002">
                        <link role="elementConcept" targetNodeId="1.7401774347124376168" resolveInfo="IActualParameter" />
                      </node>
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174003">
                        <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7463838306356174004">
                          <link role="applicableNode" targetNodeId="5430715052355518434" resolveInfo="parameterized" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="7463838306356174005">
                          <link role="link" targetNodeId="1.5430715052355518205" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="7463838306356174006" />
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="7463838306356174007">
                    <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7463838306356174008">
                      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="7463838306356174009">
                        <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="7463838306356174010">
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174011">
                            <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174012">
                              <link role="variableDeclaration" targetNodeId="7463838306356174001" resolveInfo="actualParameterList" />
                            </node>
                            <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" id="7463838306356174013" />
                          </node>
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="7463838306356174014">
                            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="7463838306356174015">
                              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="7463838306356174016">
                                <property name="value" value="Wrong parameters number. Expected: " />
                              </node>
                              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174017">
                                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174018">
                                  <link role="variableDeclaration" targetNodeId="7463838306356173990" resolveInfo="formalParameterList" />
                                </node>
                                <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" id="7463838306356174019" />
                              </node>
                            </node>
                            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="7463838306356174020">
                              <property name="value" value=". Actual: " />
                            </node>
                          </node>
                        </node>
                        <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7463838306356174021">
                          <link role="applicableNode" targetNodeId="5430715052355518434" resolveInfo="parameterized" />
                        </node>
                      </node>
                    </node>
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" id="7463838306356174022">
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174023">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174024">
                          <link role="variableDeclaration" targetNodeId="7463838306356174001" resolveInfo="actualParameterList" />
                        </node>
                        <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" id="7463838306356174025" />
                      </node>
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174026">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174027">
                          <link role="variableDeclaration" targetNodeId="7463838306356173990" resolveInfo="formalParameterList" />
                        </node>
                        <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" id="7463838306356174028" />
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="7463838306356174029" />
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7463838306356174030">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356174031">
                      <property name="name" value="min" />
                      <node role="type" type="jetbrains.mps.baseLanguage.structure.IntegerType" id="7463838306356174032" />
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="7463838306356174033">
                        <link role="baseMethodDeclaration" targetNodeId="2.~Math.min(int,int):int" resolveInfo="min" />
                        <link role="classConcept" targetNodeId="2.~Math" resolveInfo="Math" />
                        <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174034">
                          <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174035">
                            <link role="variableDeclaration" targetNodeId="7463838306356173990" resolveInfo="formalParameterList" />
                          </node>
                          <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" id="7463838306356174036" />
                        </node>
                        <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174037">
                          <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174038">
                            <link role="variableDeclaration" targetNodeId="7463838306356174001" resolveInfo="actualParameterList" />
                          </node>
                          <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" id="7463838306356174039" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ForStatement" id="7463838306356174040">
                    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7463838306356174041">
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7463838306356174042">
                        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356174043">
                          <property name="name" value="actualParameter" />
                          <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7463838306356174044">
                            <link role="concept" targetNodeId="1.7401774347124376168" resolveInfo="IActualParameter" />
                          </node>
                          <node role="initializer" type="jetbrains.mps.baseLanguage.collections.structure.ListElementAccessExpression" id="7463838306356174045">
                            <node role="index" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174046">
                              <link role="variableDeclaration" targetNodeId="7463838306356174060" resolveInfo="i" />
                            </node>
                            <node role="list" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174047">
                              <link role="variableDeclaration" targetNodeId="7463838306356174001" resolveInfo="actualParameterList" />
                            </node>
                          </node>
                        </node>
                      </node>
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7463838306356174048">
                        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356174049">
                          <property name="name" value="formalParameter" />
                          <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7463838306356174050">
                            <link role="concept" targetNodeId="1.1839742443506681637" resolveInfo="IParameter" />
                          </node>
                          <node role="initializer" type="jetbrains.mps.baseLanguage.collections.structure.ListElementAccessExpression" id="7463838306356174051">
                            <node role="index" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174052">
                              <link role="variableDeclaration" targetNodeId="7463838306356174060" resolveInfo="i" />
                            </node>
                            <node role="list" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174053">
                              <link role="variableDeclaration" targetNodeId="7463838306356173990" resolveInfo="formalParameterList" />
                            </node>
                          </node>
                        </node>
                      </node>
                      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="7463838306356174054">
                        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7463838306356174055">
                          <node role="normalType" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174056">
                            <link role="variableDeclaration" targetNodeId="7463838306356174043" resolveInfo="actualParameter" />
                          </node>
                        </node>
                        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7463838306356174057">
                          <node role="normalType" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174058">
                            <link role="variableDeclaration" targetNodeId="7463838306356174049" resolveInfo="formalParameter" />
                          </node>
                        </node>
                        <node role="nodeToCheck" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174059">
                          <link role="variableDeclaration" targetNodeId="7463838306356174043" resolveInfo="actualParameter" />
                        </node>
                      </node>
                    </node>
                    <node role="variable" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7463838306356174060">
                      <property name="name" value="i" />
                      <node role="type" type="jetbrains.mps.baseLanguage.structure.IntegerType" id="7463838306356174061" />
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="7463838306356174062">
                        <property name="value" value="0" />
                      </node>
                    </node>
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.LessThanExpression" id="7463838306356174063">
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174064">
                        <link role="variableDeclaration" targetNodeId="7463838306356174031" resolveInfo="min" />
                      </node>
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174065">
                        <link role="variableDeclaration" targetNodeId="7463838306356174060" resolveInfo="i" />
                      </node>
                    </node>
                    <node role="iteration" type="jetbrains.mps.baseLanguage.structure.PostfixIncrementExpression" id="7463838306356174066">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174067">
                        <link role="variableDeclaration" targetNodeId="7463838306356174060" resolveInfo="i" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174068">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174069">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174070">
                      <link role="variableDeclaration" targetNodeId="7463838306356173982" resolveInfo="entity" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="7463838306356174071" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="7463838306356174072">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="7463838306356174073">
                      <link role="conceptDeclaration" targetNodeId="1.8372054433699552952" resolveInfo="IParameterizedAssignment" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="7463838306356174074">
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" id="7463838306356174075">
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="7463838306356174076" />
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174077">
                  <link role="variableDeclaration" targetNodeId="7463838306356173971" resolveInfo="result" />
                </node>
              </node>
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356174078">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7463838306356174079">
                  <link role="variableDeclaration" targetNodeId="7463838306356173971" resolveInfo="result" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="7463838306356174080">
                  <link role="baseMethodDeclaration" targetNodeId="2v.867789194271762934" resolveInfo="isSuccess" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="7463838306356174081" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="7463838306356174082">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="7463838306356174083">
              <link role="classConcept" targetNodeId="2v.5312198670450954145" resolveInfo="TypesystemContext" />
              <link role="baseMethodDeclaration" targetNodeId="2v.7025089329248984337" resolveInfo="restoreContext" />
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="7463838306356173936">
          <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
          <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
          <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7463838306356173938">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7463838306356173937">
              <link role="applicableNode" targetNodeId="5430715052355518434" resolveInfo="parameterized" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="7463838306356173944">
              <link role="link" targetNodeId="1.5430715052355518123" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="5430715052355518434">
      <property name="name" value="parameterized" />
      <link role="concept" targetNodeId="1.5430715052355518204" resolveInfo="IParameterized" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="5430715052355678301">
    <property name="package" value="BuiltinType" />
    <property name="name" value="TypeFromObject" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="5430715052355678306">
      <property name="name" value="value" />
      <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="Value" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355678303">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="5430715052355678307">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355678308">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="5430715052355678459">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="5430715052355678462">
              <property name="value" value="defined or parameterized object is expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355678463">
              <link role="applicableNode" targetNodeId="5430715052355678305" resolveInfo="typeFromObject" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="5430715052355678465" />
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="5430715052355678319">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678320">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678321">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355678456">
                <link role="applicableNode" targetNodeId="5430715052355678305" resolveInfo="typeFromObject" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="5430715052355678457">
                <link role="link" targetNodeId="1.5430715052355519127" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="5430715052355678324">
              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="5430715052355678325">
                <link role="conceptDeclaration" targetNodeId="1.1839742443506153671" resolveInfo="ParameterizedObjectSet" />
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678326">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678327">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355678454">
                <link role="applicableNode" targetNodeId="5430715052355678305" resolveInfo="typeFromObject" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="5430715052355678455">
                <link role="link" targetNodeId="1.5430715052355519127" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="5430715052355678330">
              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3310844120966785265">
                <link role="conceptDeclaration" targetNodeId="1.3310844120966785236" resolveInfo="DefinedObjectSet" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="5430715052355678332" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="5430715052355678333">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="5430715052355678334">
          <property name="name" value="fieldSpec" />
          <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="5430715052355678335">
            <link role="concept" targetNodeId="1.1678051738085519718" resolveInfo="IFieldSpecification" />
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678336">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678337">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355678466">
                <link role="applicableNode" targetNodeId="5430715052355678305" resolveInfo="typeFromObject" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="5430715052355678467">
                <link role="link" targetNodeId="1.5430715052355519128" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="5430715052355678340">
              <link role="baseMethodDeclaration" targetNodeId="2v.3328285038575861562" resolveInfo="last" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="5430715052355678341" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="5430715052355678342">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355678343">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="5430715052355678469">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="5430715052355678470">
              <property name="value" value="type field expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355678471">
              <link role="applicableNode" targetNodeId="5430715052355678305" resolveInfo="typeFromObject" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="5430715052355678472" />
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="5430715052355678352">
          <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678353">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="5430715052355678354">
              <link role="variableDeclaration" targetNodeId="5430715052355678334" resolveInfo="fieldSpec" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="5430715052355678355">
              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="5430715052355678356">
                <link role="conceptDeclaration" targetNodeId="1.1678051738085519740" resolveInfo="TypeFieldSpecification" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="5430715052355678357" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="5430715052355678358">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355678359">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="5430715052355678360">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="5430715052355678361">
              <property name="name" value="definedObject" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="5430715052355678362">
                <link role="concept" targetNodeId="1.8479206315888482109" resolveInfo="DefinedObject" />
              </node>
              <node role="initializer" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="5430715052355678363">
                <link role="concept" targetNodeId="1.8479206315888482109" resolveInfo="DefinedObject" />
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678364">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355678475">
                    <link role="applicableNode" targetNodeId="5430715052355678305" resolveInfo="typeFromObject" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="5430715052355678476">
                    <link role="link" targetNodeId="1.5430715052355519127" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="5430715052355678367">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="5430715052355678368">
              <property name="name" value="objectRef" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="5430715052355678369">
                <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="5430715052355678370">
                  <link role="concept" targetNodeId="1.8479206315888459466" resolveInfo="Object" />
                </node>
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="5430715052355678371">
                <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="5430715052355678372">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="5430715052355678373" />
                  <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="5430715052355678374">
                    <link role="concept" targetNodeId="1.8479206315888459466" resolveInfo="Object" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="5430715052355678375" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="5430715052355678482">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="5430715052355678483">
              <property name="name" value="result" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="5430715052355678484">
                <link role="classifier" targetNodeId="2v.9152698315530103301" resolveInfo="EntityValidationResult" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678486">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="5430715052355678487">
                  <link role="variableDeclaration" targetNodeId="5430715052355678361" resolveInfo="definedObject" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="5430715052355678488">
                  <link role="baseMethodDeclaration" targetNodeId="2v.8479206315888471679" resolveInfo="getRootObject" />
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="5430715052355678489">
                    <link role="variableDeclaration" targetNodeId="5430715052355678368" resolveInfo="objectRef" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="5430715052355678384" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="5430715052355678385">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355678386">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="5430715052355678492">
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="5430715052355678495">
                  <property name="value" value="TypeFromObject getRootObject error" />
                </node>
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355678496">
                  <link role="applicableNode" targetNodeId="5430715052355678305" resolveInfo="typeFromObject" />
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="5430715052355678387" />
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="5430715052355678389">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678390">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="5430715052355678391">
                  <link role="variableDeclaration" targetNodeId="5430715052355678483" resolveInfo="result" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="5430715052355678392">
                  <link role="baseMethodDeclaration" targetNodeId="2v.867789194271762934" resolveInfo="isSuccess" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="5430715052355678393" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="5430715052355678394">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="5430715052355678395">
              <property name="name" value="object" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="5430715052355678396">
                <link role="concept" targetNodeId="1.8479206315888459466" resolveInfo="Object" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678397">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="5430715052355678398">
                  <link role="variableDeclaration" targetNodeId="5430715052355678368" resolveInfo="objectRef" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="5430715052355678399">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="5430715052355678400" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="5430715052355678401">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355678402" />
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678442">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="5430715052355678443">
                <link role="variableDeclaration" targetNodeId="5430715052355678395" resolveInfo="object" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="5430715052355678444">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8479206315888552514">
                  <link role="conceptDeclaration" targetNodeId="1.8479206315888552459" resolveInfo="ObjectDefn" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678446">
          <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355678447">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355678473">
              <link role="applicableNode" targetNodeId="5430715052355678305" resolveInfo="typeFromObject" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="5430715052355678474">
              <link role="link" targetNodeId="1.5430715052355519127" />
            </node>
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="5430715052355678450">
            <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8479206315888552495">
              <link role="conceptDeclaration" targetNodeId="1.8479206315888482109" resolveInfo="DefinedObject" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="5430715052355678305">
      <property name="name" value="typeFromObject" />
      <link role="concept" targetNodeId="1.1678051738094885553" resolveInfo="TypeFromObject" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="5430715052355760481">
    <property name="name" value="NamedType_CompareWithNamedValue" />
    <property name="package" value="NamedEntities" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="5430715052355760486">
      <property name="name" value="namedValue" />
      <link role="concept" targetNodeId="1.1678051738082486172" resolveInfo="NamedValue" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355760483">
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="5430715052355760494">
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="5430715052355760498">
          <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="5430715052355760500">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355760499">
              <link role="applicableNode" targetNodeId="5430715052355760486" resolveInfo="namedValue" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="5430715052355760504">
              <link role="link" targetNodeId="1.1678051738082486174" />
            </node>
          </node>
        </node>
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="5430715052355760497">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5430715052355760488">
            <link role="applicableNode" targetNodeId="5430715052355760485" resolveInfo="namedType" />
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="5430715052355760485">
      <property name="name" value="namedType" />
      <link role="concept" targetNodeId="1.7534685045991864887" resolveInfo="NamedType" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="5430715052355766383">
    <property name="name" value="NamedType_CompareWithValue" />
    <property name="package" value="NamedEntities" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="5430715052355766388">
      <property name="name" value="value" />
      <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="Value" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5430715052355766385">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7025089329250289381">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7025089329250289382">
          <property name="name" value="refType" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="7025089329250289383">
            <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
            <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7025089329250289384">
              <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
            </node>
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="7025089329250289385">
            <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="7025089329250289386">
              <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="7025089329250289387" />
              <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7025089329250289388">
                <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="7025089329250914206" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7025089329250289267">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7025089329250289268">
          <property name="name" value="result" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="7025089329250289269">
            <link role="classifier" targetNodeId="2v.9152698315530103301" resolveInfo="EntityValidationResult" />
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7025089329250289277">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7025089329250289272">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7025089329250289271">
                <link role="applicableNode" targetNodeId="5430715052355766387" resolveInfo="namedType" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="7025089329250289276">
                <link role="link" targetNodeId="1.7534685045991864889" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="7025089329250289281">
              <link role="baseMethodDeclaration" targetNodeId="2v.1048767958318510015" resolveInfo="getUnwrappedType" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7025089329250289390">
                <link role="variableDeclaration" targetNodeId="7025089329250289382" resolveInfo="refType" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="7025089329250289472" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="7025089329250289430">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7025089329250289431">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="7025089329250289437">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7025089329250289438">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="7025089329250289439">
                <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7025089329250289440">
                  <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7025089329250289441">
                    <link role="applicableNode" targetNodeId="5430715052355766388" resolveInfo="value" />
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7025089329250289452">
                  <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7025089329250289456">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7025089329250289453">
                      <link role="variableDeclaration" targetNodeId="7025089329250289382" resolveInfo="refType" />
                    </node>
                    <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="7025089329250289462">
                      <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7025089329250289446">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7025089329250289447">
                <link role="variableDeclaration" targetNodeId="7025089329250289268" resolveInfo="result" />
              </node>
              <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="7025089329250289448">
                <link role="baseMethodDeclaration" targetNodeId="2v.867789194271762934" resolveInfo="isSuccess" />
              </node>
            </node>
            <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="7025089329250289449">
              <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7025089329250289450">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.RemarkStatement" id="7025089329250289451">
                  <property name="value" value="Errors in result" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" id="7025089329250289434">
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7025089329250289435">
            <link role="variableDeclaration" targetNodeId="7025089329250289268" resolveInfo="result" />
          </node>
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="7025089329250289436" />
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="5430715052355766387">
      <property name="name" value="namedType" />
      <link role="concept" targetNodeId="1.7534685045991864887" resolveInfo="NamedType" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="7323414590766938824">
    <property name="package" value="ActualParameter.Reference" />
    <property name="name" value="ActualTypeParameterReference" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="7323414590766938829">
      <property name="name" value="value" />
      <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="Value" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7323414590766938826">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7323414590766938845">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7323414590766938846">
          <property name="name" value="refEntity" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="7323414590766938847">
            <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
            <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7323414590766938849">
              <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
            </node>
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="7323414590766938851">
            <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="7323414590766949864">
              <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="7323414590766949865" />
              <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7323414590766949869">
                <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7323414590766949873">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7323414590766949874">
          <property name="name" value="result" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="7323414590766949875">
            <link role="classifier" targetNodeId="2v.9152698315530103301" resolveInfo="EntityValidationResult" />
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7323414590766949878">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8128616089531074722">
              <link role="applicableNode" targetNodeId="7323414590766938828" resolveInfo="actualParameterReference" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="7323414590766949882">
              <link role="baseMethodDeclaration" targetNodeId="2v.5430715052355428987" resolveInfo="getRootEntity" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7323414590766949885">
                <link role="variableDeclaration" targetNodeId="7323414590766938846" resolveInfo="refValue" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="8128616089530644774" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="7323414590766949889">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7323414590766949890">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="7323414590766955100">
            <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7323414590766955105">
              <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8128616089530766567">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8128616089530766564">
                  <link role="variableDeclaration" targetNodeId="7323414590766938846" resolveInfo="refEntity" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="8128616089530766573">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                </node>
              </node>
            </node>
            <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="8128616089530766575">
              <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8128616089530766576">
                <link role="applicableNode" targetNodeId="7323414590766938829" resolveInfo="value" />
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7323414590766950127">
          <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7323414590766950124">
            <link role="variableDeclaration" targetNodeId="7323414590766949874" resolveInfo="result" />
          </node>
          <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="7323414590766950133">
            <link role="baseMethodDeclaration" targetNodeId="2v.867789194271762934" resolveInfo="isSuccess" />
          </node>
        </node>
        <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="7323414590766955121">
          <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7323414590766955122">
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.RemarkStatement" id="7323414590766955123">
              <property name="value" value="errors from result var" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="7323414590766938828">
      <property name="name" value="actualParameterReference" />
      <link role="concept" targetNodeId="1.7784030075846106430" resolveInfo="ActualParameterReference" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="6065565260651078524">
    <property name="name" value="typeof_ValueRange" />
    <property name="package" value="BuiltinType.ConstrainedType.SubtypeElements" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="6065565260651078525">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830255723">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830255724">
          <property name="name" value="isSizeConstraint" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="4208300936830255725" />
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.BooleanConstant" id="4208300936830255727">
            <property name="value" value="false" />
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="4208300936830255728" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830017905">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830017906">
          <property name="name" value="subtypeElements" />
          <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830017907">
            <link role="concept" targetNodeId="1.1046849219940989681" resolveInfo="ISubtypeElements" />
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830017910">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830017909">
              <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="4208300936830017914">
              <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="4208300936830017915">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830017928">
                  <link role="conceptDeclaration" targetNodeId="1.1046849219940989681" resolveInfo="ISubtypeElements" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830017930">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830017931">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830017954">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830017955">
              <property name="name" value="unconstrainedType" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830017956">
                <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830017957">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830017958">
                  <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830017959">
                  <link role="baseMethodDeclaration" targetNodeId="2v.4208300936827883953" resolveInfo="getUnconstrainedType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="4208300936830017960" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830017961">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830017962">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936830017963">
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830017964">
                  <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                </node>
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4208300936830017965">
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936830017966">
                    <property name="value" value="value range constraint isn't applicable for " />
                  </node>
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830017967">
                    <link role="variableDeclaration" targetNodeId="4208300936830017955" resolveInfo="unconstrainedType" />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4208300936830017968">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830017969">
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830017970">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830017971">
                    <link role="variableDeclaration" targetNodeId="4208300936830017955" resolveInfo="unconstrainedType" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830017972">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830017973">
                      <link role="conceptDeclaration" targetNodeId="1.1048767958318909860" resolveInfo="RestrictedCharacterStringType" />
                    </node>
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830017974">
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830017975">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830017976">
                      <link role="variableDeclaration" targetNodeId="4208300936830017955" resolveInfo="unconstrainedType" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830017977">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830017978">
                        <link role="conceptDeclaration" targetNodeId="1.8702535492065731432" resolveInfo="IntegerType" />
                      </node>
                    </node>
                  </node>
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830017979">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830017980">
                      <link role="variableDeclaration" targetNodeId="4208300936830017955" resolveInfo="unconstrainedType" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830017981">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830017982">
                        <link role="conceptDeclaration" targetNodeId="1.8702535492065480015" resolveInfo="RealType" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830017940">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4208300936830017950">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830017944">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830017943">
                <link role="variableDeclaration" targetNodeId="4208300936830017906" resolveInfo="subtypeElements" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830017948">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830017952">
                  <link role="conceptDeclaration" targetNodeId="1.5803918984630517440" resolveInfo="SizeConstraint" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830017935">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830017934">
              <link role="variableDeclaration" targetNodeId="4208300936830017906" resolveInfo="subtypeElements" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNullOperation" id="4208300936830017939" />
          </node>
        </node>
        <node role="elsifClauses" type="jetbrains.mps.baseLanguage.structure.ElsifClause" id="4208300936830255650">
          <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936830255659">
            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.ParenthesizedExpression" id="4208300936830556051">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830556053">
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830556057">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830556056">
                    <link role="variableDeclaration" targetNodeId="4208300936830017906" resolveInfo="subtypeElements" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830556061">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830556063">
                      <link role="conceptDeclaration" targetNodeId="1.5803918984631594835" resolveInfo="PermittedAlphabet" />
                    </node>
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255663">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830255662">
                    <link role="variableDeclaration" targetNodeId="4208300936830017906" resolveInfo="subtypeElements" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830255667">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830255669">
                      <link role="conceptDeclaration" targetNodeId="1.5803918984630517440" resolveInfo="SizeConstraint" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255654">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830255653">
                <link role="variableDeclaration" targetNodeId="4208300936830017906" resolveInfo="subtypeElements" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830255658" />
            </node>
          </node>
          <node role="statementList" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830255652">
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830255733">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="4208300936830255735">
                <node role="rValue" type="jetbrains.mps.baseLanguage.structure.BooleanConstant" id="4208300936830255738">
                  <property name="value" value="true" />
                </node>
                <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830255734">
                  <link role="variableDeclaration" targetNodeId="4208300936830255724" resolveInfo="isSizeConstraint" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="4208300936830255670" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830282745">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830282746">
          <property name="name" value="refLowerValue" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="4208300936830282747">
            <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
            <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830282749">
              <link role="concept" targetNodeId="1.4208300936830257978" resolveInfo="IComparable" />
            </node>
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="4208300936830282751">
            <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="4208300936830282752">
              <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
              <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830282753">
                <link role="concept" targetNodeId="1.4208300936830257978" resolveInfo="IComparable" />
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936830282762" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830282755">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830282756">
          <property name="name" value="refUpperValue" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="4208300936830282757">
            <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
            <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830282758">
              <link role="concept" targetNodeId="1.4208300936830257978" resolveInfo="IComparable" />
            </node>
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="4208300936830282759">
            <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="4208300936830282760">
              <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
              <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830282761">
                <link role="concept" targetNodeId="1.4208300936830257978" resolveInfo="IComparable" />
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936830282764" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="4208300936830255772" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830255672">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830255673">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830255674">
            <node role="expression" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="4208300936830255675">
              <link role="baseMethodDeclaration" targetNodeId="2v.4208300936829503841" resolveInfo="checkValue" />
              <link role="concept" targetNodeId="1.5803918984630072241" resolveInfo="ValueRange" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255676">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255677">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830255678">
                    <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255679">
                    <link role="link" targetNodeId="1.5803918984630072245" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255680">
                  <link role="link" targetNodeId="1.5803918984630072265" />
                </node>
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255681">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830255682">
                  <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255683">
                  <link role="link" targetNodeId="1.5803918984630072245" />
                </node>
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830255730">
                <link role="variableDeclaration" targetNodeId="4208300936830255724" resolveInfo="isSizeConstraint" />
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830282769">
                <link role="variableDeclaration" targetNodeId="4208300936830282746" resolveInfo="refLowerValue" />
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936830255684">
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255685">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255686">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830255687">
                <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255688">
                <link role="link" targetNodeId="1.5803918984630072245" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830255689" />
          </node>
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255690">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255691">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255692">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830255693">
                  <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255694">
                  <link role="link" targetNodeId="1.5803918984630072245" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255695">
                <link role="link" targetNodeId="1.5803918984630072265" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830255696" />
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="4208300936830255697" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830255698">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830255699">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830255700">
            <node role="expression" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="4208300936830255701">
              <link role="concept" targetNodeId="1.5803918984630072241" resolveInfo="ValueRange" />
              <link role="baseMethodDeclaration" targetNodeId="2v.4208300936829503841" resolveInfo="checkValue" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255702">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255703">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830255704">
                    <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255705">
                    <link role="link" targetNodeId="1.5803918984630072246" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255706">
                  <link role="link" targetNodeId="1.3016143038558564954" />
                </node>
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255707">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830255708">
                  <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255709">
                  <link role="link" targetNodeId="1.5803918984630072246" />
                </node>
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830255732">
                <link role="variableDeclaration" targetNodeId="4208300936830255724" resolveInfo="isSizeConstraint" />
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830282771">
                <link role="variableDeclaration" targetNodeId="4208300936830282756" resolveInfo="refUpperValue" />
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936830255710">
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255711">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255712">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830255713">
                <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255714">
                <link role="link" targetNodeId="1.5803918984630072246" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830255715" />
          </node>
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255716">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255717">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830255718">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830255719">
                  <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255720">
                  <link role="link" targetNodeId="1.5803918984630072246" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830255721">
                <link role="link" targetNodeId="1.3016143038558564954" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830255722" />
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="4208300936830255757" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830282773">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830282774">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830282857">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830282858">
              <property name="name" value="res" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.IntegerType" id="4208300936830282859" />
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830282885">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830282864">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830282861">
                    <link role="variableDeclaration" targetNodeId="4208300936830282746" resolveInfo="refLowerValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936830282870">
                    <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830282894">
                  <link role="baseMethodDeclaration" targetNodeId="2v.4208300936830257982" resolveInfo="compare" />
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830282898">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830282895">
                      <link role="variableDeclaration" targetNodeId="4208300936830282756" resolveInfo="refUpperValue" />
                    </node>
                    <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936830282904">
                      <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830282907">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830282908">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936830282930">
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936830282933">
                  <property name="value" value="Illegal range" />
                </node>
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830282934">
                  <link role="applicableNode" targetNodeId="6065565260651078526" resolveInfo="valueRange" />
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="4208300936830282927">
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830282928">
                <link role="variableDeclaration" targetNodeId="4208300936830282858" resolveInfo="res" />
              </node>
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="4208300936830282929">
                <property name="value" value="1" />
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936830282798">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" id="4208300936830282820">
            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936830282825" />
            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830282806">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830282802">
                <link role="variableDeclaration" targetNodeId="4208300936830282756" resolveInfo="refUpperValue" />
              </node>
              <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936830282813">
                <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" id="4208300936830282792">
            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830282780">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830282777">
                <link role="variableDeclaration" targetNodeId="4208300936830282746" resolveInfo="refLowerValue" />
              </node>
              <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936830282786">
                <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
              </node>
            </node>
            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936830282796" />
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="6065565260651078526">
      <property name="name" value="valueRange" />
      <link role="concept" targetNodeId="1.5803918984630072241" resolveInfo="ValueRange" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4208300936827611671">
    <property name="name" value="typeof_ContainedSubtype" />
    <property name="package" value="BuiltinType.ConstrainedType.SubtypeElements" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936827611672">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936827635329">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936831212494">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4208300936831212497">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936831212516">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936831212508">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936831212502">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936831212501">
                    <link role="applicableNode" targetNodeId="4208300936827611673" resolveInfo="subtype" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936831212507">
                    <link role="link" targetNodeId="1.1046849219940989700" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetConceptOperation" id="4208300936831212512" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Concept_IsExactlyOperation" id="4208300936831212523">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936831212526">
                  <link role="conceptDeclaration" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936827713183">
            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827637870">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936827635332">
                <link role="applicableNode" targetNodeId="4208300936827611673" resolveInfo="subtype" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936827637874" />
            </node>
            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827713192">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827713187">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936827713186">
                  <link role="applicableNode" targetNodeId="4208300936827611673" resolveInfo="subtype" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936827713191">
                  <link role="link" targetNodeId="1.1046849219940989700" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936827713196" />
            </node>
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936827635331">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936827713197">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936827713198">
              <property name="name" value="refType" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="4208300936827713199">
                <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936827713201">
                  <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                </node>
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="4208300936827713203">
                <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="4208300936827713204">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                  <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936827713205">
                    <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                  </node>
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936827713206" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936827713209">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827713216">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827713211">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936827713210">
                  <link role="applicableNode" targetNodeId="4208300936827611673" resolveInfo="subtype" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936827713215">
                  <link role="link" targetNodeId="1.1046849219940989700" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936827725411">
                <link role="baseMethodDeclaration" targetNodeId="2v.1048767958318510015" resolveInfo="getUnwrappedType" />
                <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936827725412">
                  <link role="variableDeclaration" targetNodeId="4208300936827713198" resolveInfo="refType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936827725426">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936827725427">
              <property name="name" value="type" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936827725428">
                <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827725433">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936827725430">
                  <link role="variableDeclaration" targetNodeId="4208300936827713198" resolveInfo="refType" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936827725439">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936827725415">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936827725416">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936827725515">
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4208300936827725523">
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936827725518">
                    <link role="variableDeclaration" targetNodeId="4208300936827725427" resolveInfo="type" />
                  </node>
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936827725527">
                    <property name="value" value=" unexpected" />
                  </node>
                </node>
                <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827725529">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936827725528">
                    <link role="applicableNode" targetNodeId="4208300936827611673" resolveInfo="subtype" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936827725533">
                    <link role="link" targetNodeId="1.1046849219940989700" />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936827725496">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827725504">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936827725499">
                  <link role="variableDeclaration" targetNodeId="4208300936827725427" resolveInfo="type" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936827725512">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936827725514">
                    <link role="conceptDeclaration" targetNodeId="1.2892697590863967415" resolveInfo="UnrestrictedCharacterStringType" />
                  </node>
                </node>
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936827725476">
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936827725457">
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827725446">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936827725441">
                      <link role="variableDeclaration" targetNodeId="4208300936827725427" resolveInfo="type" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936827725454">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936827725456">
                        <link role="conceptDeclaration" targetNodeId="1.8702535492065480010" resolveInfo="EmbeddedPDVType" />
                      </node>
                    </node>
                  </node>
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827725465">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936827725460">
                      <link role="variableDeclaration" targetNodeId="4208300936827725427" resolveInfo="type" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936827725473">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936827725475">
                        <link role="conceptDeclaration" targetNodeId="1.7793031572832809336" resolveInfo="OpenTypeFieldValue" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936827725484">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936827725479">
                    <link role="variableDeclaration" targetNodeId="4208300936827725427" resolveInfo="type" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936827725492">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936827725495">
                      <link role="conceptDeclaration" targetNodeId="1.1678051738089887717" resolveInfo="ExternalType" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4208300936827611673">
      <property name="name" value="subtype" />
      <link role="concept" targetNodeId="1.1046849219940989697" resolveInfo="ContainedSubtype" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4208300936827808504">
    <property name="name" value="typeof_SingleValue" />
    <property name="package" value="BuiltinType.ConstrainedType.SubtypeElements" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936827808505">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936827808507">
        <node role="condition" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="8600224617539641946">
          <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
          <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
          <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539641954">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617539641953">
              <link role="applicableNode" targetNodeId="4208300936827808506" resolveInfo="singleValue" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8600224617539641958">
              <link role="link" targetNodeId="1.1046849219940989691" />
            </node>
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936827808517">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936827808518">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936827808519">
              <property name="name" value="refValue" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="4208300936827808520">
                <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936827808521">
                  <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="ASNValue" />
                </node>
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="4208300936827808522">
                <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="4208300936827808523">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                  <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936827808524">
                    <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="ASNValue" />
                  </node>
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936827808525" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617539566366">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617539566367">
              <property name="name" value="validationResult" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="8600224617539566368">
                <link role="classifier" targetNodeId="2v.9152698315530103301" resolveInfo="EntityValidationResult" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539566370">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539566371">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617539566372">
                    <link role="applicableNode" targetNodeId="4208300936827808506" resolveInfo="singleValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8600224617539566373">
                    <link role="link" targetNodeId="1.1046849219940989691" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="8600224617539566374">
                  <link role="baseMethodDeclaration" targetNodeId="2v.6065565260651085766" resolveInfo="getUnwrappedValue" />
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617539566375">
                    <link role="variableDeclaration" targetNodeId="4208300936827808519" resolveInfo="refValue" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8600224617539566377">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617539566378">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617539571371">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617539571372">
                  <property name="name" value="value" />
                  <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8600224617539571373">
                    <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="ASNValue" />
                  </node>
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539571374">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617539571375">
                      <link role="variableDeclaration" targetNodeId="4208300936827808519" resolveInfo="refValue" />
                    </node>
                    <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="8600224617539571376">
                      <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8600224617539571377">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617539571378">
                  <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="8600224617539571379">
                    <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8600224617539571380">
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617539571381">
                        <link role="variableDeclaration" targetNodeId="8600224617539571372" resolveInfo="value" />
                      </node>
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8600224617539571382">
                        <property name="value" value=" unexpected" />
                      </node>
                    </node>
                    <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539571383">
                      <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617539571384">
                        <link role="applicableNode" targetNodeId="4208300936827808506" resolveInfo="singleValue" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8600224617539571385">
                        <link role="link" targetNodeId="1.1046849219940989691" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539571386">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617539571387">
                    <link role="variableDeclaration" targetNodeId="8600224617539571372" resolveInfo="value" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="8600224617539571388">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8600224617539571389">
                      <link role="conceptDeclaration" targetNodeId="1.7793031572832809336" resolveInfo="OpenTypeFieldValue" />
                    </node>
                  </node>
                </node>
                <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="8600224617539571390">
                  <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617539571391">
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617539571392">
                      <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617539571393">
                        <property name="name" value="typeProvider" />
                        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8600224617539571394">
                          <link role="concept" targetNodeId="1.4534048328793079724" resolveInfo="ITypeProvider" />
                        </node>
                        <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539571395">
                          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617539571396">
                            <link role="applicableNode" targetNodeId="4208300936827808506" resolveInfo="singleValue" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="8600224617539571397">
                            <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="8600224617539571398">
                              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8600224617539571399">
                                <link role="conceptDeclaration" targetNodeId="1.4534048328793079724" resolveInfo="ITypeProvider" />
                              </node>
                            </node>
                          </node>
                        </node>
                      </node>
                    </node>
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8600224617539571439">
                      <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617539571440">
                        <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617539571451">
                          <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617539571452">
                            <property name="name" value="type" />
                            <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8600224617539571453">
                              <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                            </node>
                            <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539571454">
                              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617539571455">
                                <link role="variableDeclaration" targetNodeId="8600224617539571393" resolveInfo="typeProvider" />
                              </node>
                              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="8600224617539571456">
                                <link role="baseMethodDeclaration" targetNodeId="2v.4534048328793079732" resolveInfo="getType" />
                              </node>
                            </node>
                          </node>
                        </node>
                        <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4529807355381945251">
                          <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="4529807355381945252">
                            <link role="classConcept" targetNodeId="2103069454648604109" resolveInfo="CheckingRules" />
                            <link role="baseMethodDeclaration" targetNodeId="6366208545134351741" resolveInfo="checkValue" />
                            <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4529807355381945253">
                              <link role="variableDeclaration" targetNodeId="8600224617539571452" resolveInfo="type" />
                            </node>
                            <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4529807355381945254">
                              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4529807355381945255">
                                <link role="applicableNode" targetNodeId="4208300936827808506" resolveInfo="singleValue" />
                              </node>
                              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4529807355381945256">
                                <link role="link" targetNodeId="1.1046849219940989691" />
                              </node>
                            </node>
                          </node>
                        </node>
                      </node>
                      <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539571444">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617539571443">
                          <link role="variableDeclaration" targetNodeId="8600224617539571393" resolveInfo="typeProvider" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="8600224617539571448" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="8600224617539566388">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539566394">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617539566391">
                  <link role="variableDeclaration" targetNodeId="8600224617539566367" resolveInfo="validationResult" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="8600224617539566400">
                  <link role="baseMethodDeclaration" targetNodeId="2v.867789194271762934" resolveInfo="isSuccess" />
                </node>
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" id="8600224617539566384">
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617539566381">
                  <link role="variableDeclaration" targetNodeId="8600224617539566367" resolveInfo="validationResult" />
                </node>
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="8600224617539566387" />
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4208300936827808506">
      <property name="name" value="singleValue" />
      <link role="concept" targetNodeId="1.1046849219940989689" resolveInfo="SingleValue" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4208300936827808584">
    <property name="name" value="typeof_SizeConstraint" />
    <property name="package" value="BuiltinType.ConstrainedType.SubtypeElements" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936827808585">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936827808587">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936827808588">
          <property name="name" value="unconstrainedType" />
          <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936827808589">
            <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
          </node>
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936828479418">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936828479417">
              <link role="applicableNode" targetNodeId="4208300936827808586" resolveInfo="sizeConstraint" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936828479422">
              <link role="baseMethodDeclaration" targetNodeId="2v.4208300936827883953" resolveInfo="getUnconstrainedType" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="4208300936828941428" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936827901615">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936827901616">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936827901659">
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936827901664">
              <link role="applicableNode" targetNodeId="4208300936827808586" resolveInfo="sizeConstraint" />
            </node>
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4208300936828143303">
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936827901663">
                <property name="value" value="size constraint isn't applicable for " />
              </node>
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936828143306">
                <link role="variableDeclaration" targetNodeId="4208300936827808588" resolveInfo="unconstrainedType" />
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4208300936827901626">
          <node role="expression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936829392316">
            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936829392320">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936829392319">
                <link role="variableDeclaration" targetNodeId="4208300936827808588" resolveInfo="unconstrainedType" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936829392324">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936829392326">
                  <link role="conceptDeclaration" targetNodeId="1.1048767958318909864" resolveInfo="ICollectionOfType" />
                </node>
              </node>
            </node>
            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936829392304">
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936828367366">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936828367367">
                  <link role="variableDeclaration" targetNodeId="4208300936827808588" resolveInfo="unconstrainedType" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936828367368">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936828367369">
                    <link role="conceptDeclaration" targetNodeId="1.7401774347124399986" resolveInfo="BitStringType" />
                  </node>
                </node>
              </node>
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936829392309">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936829392308">
                  <link role="variableDeclaration" targetNodeId="4208300936827808588" resolveInfo="unconstrainedType" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936829392313">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936829392315">
                    <link role="conceptDeclaration" targetNodeId="1.8702535492065480022" resolveInfo="OctetStringType" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4208300936827808586">
      <property name="name" value="sizeConstraint" />
      <link role="concept" targetNodeId="1.5803918984630517440" resolveInfo="SizeConstraint" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4208300936830667636">
    <property name="name" value="typeof_PermittedAlphabet" />
    <property name="package" value="BuiltinType.ConstrainedType.SubtypeElements" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830667637">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830667645">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936830667646">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830667647">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830667648">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830667691">
                <link role="applicableNode" targetNodeId="4208300936830667638" resolveInfo="alphabet" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830667692">
                <link role="link" targetNodeId="1.5803918984631594837" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830667651" />
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830667652">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830667690">
              <link role="applicableNode" targetNodeId="4208300936830667638" resolveInfo="alphabet" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830667654" />
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830667655">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830667656">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830667657">
              <property name="name" value="refType" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="4208300936830667658">
                <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830667659">
                  <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                </node>
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="4208300936830667660">
                <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="4208300936830667661">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                  <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830667662">
                    <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                  </node>
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936830667663" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830679391">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830679392">
              <property name="name" value="type" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679393">
                <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679395">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679396">
                  <link role="applicableNode" targetNodeId="4208300936830667638" resolveInfo="alphabet" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830679397">
                  <link role="baseMethodDeclaration" targetNodeId="2v.4208300936827883953" resolveInfo="getUnconstrainedType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830679428">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679429">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679430">
                <link role="variableDeclaration" targetNodeId="4208300936830679392" resolveInfo="type" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830679431">
                <link role="baseMethodDeclaration" targetNodeId="2v.1048767958318509980" resolveInfo="getRootType" />
                <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679432">
                  <link role="variableDeclaration" targetNodeId="4208300936830667657" resolveInfo="refType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830679404">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="4208300936830679410">
              <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679416">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679413">
                  <link role="variableDeclaration" targetNodeId="4208300936830667657" resolveInfo="refType" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936830679422">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                </node>
              </node>
              <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679405">
                <link role="variableDeclaration" targetNodeId="4208300936830679392" resolveInfo="type" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830667677">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830667678">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936830667679">
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679435">
                  <link role="applicableNode" targetNodeId="4208300936830667638" resolveInfo="alphabet" />
                </node>
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4208300936830679441">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679444">
                    <link role="variableDeclaration" targetNodeId="4208300936830679392" resolveInfo="type" />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936830679440">
                    <property name="value" value="permitted alphabet constraint isn't permitted for the " />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4208300936830679425">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830667686">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679424">
                  <link role="variableDeclaration" targetNodeId="4208300936830679392" resolveInfo="type" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830667688">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830679433">
                    <link role="conceptDeclaration" targetNodeId="1.1048767958318909860" resolveInfo="RestrictedCharacterStringType" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4208300936830667638">
      <property name="name" value="alphabet" />
      <link role="concept" targetNodeId="1.5803918984631594835" resolveInfo="PermittedAlphabet" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4208300936830679451">
    <property name="name" value="typeof_TypeConstraint" />
    <property name="package" value="BuiltinType.ConstrainedType.SubtypeElements" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679452">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830679454">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679461">
          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679504">
            <link role="applicableNode" targetNodeId="4208300936830679453" resolveInfo="typeConstraint" />
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830679463" />
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679464">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830679465">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830679466">
              <property name="name" value="refType" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="4208300936830679467">
                <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679468">
                  <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                </node>
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="4208300936830679469">
                <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="4208300936830679470">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                  <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679471">
                    <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                  </node>
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936830679472" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830679473">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830679474">
              <property name="name" value="type" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679475">
                <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679476">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679506">
                  <link role="applicableNode" targetNodeId="4208300936830679453" resolveInfo="typeConstraint" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830679478">
                  <link role="baseMethodDeclaration" targetNodeId="2v.4208300936827883953" resolveInfo="getUnconstrainedType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830679479">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679480">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679481">
                <link role="variableDeclaration" targetNodeId="4208300936830679474" resolveInfo="type" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830679482">
                <link role="baseMethodDeclaration" targetNodeId="2v.1048767958318509980" resolveInfo="getRootType" />
                <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679483">
                  <link role="variableDeclaration" targetNodeId="4208300936830679466" resolveInfo="refType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830679484">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="4208300936830679485">
              <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679486">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679487">
                  <link role="variableDeclaration" targetNodeId="4208300936830679466" resolveInfo="refType" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936830679488">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                </node>
              </node>
              <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679489">
                <link role="variableDeclaration" targetNodeId="4208300936830679474" resolveInfo="type" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830679490">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679491">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936830679492">
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679509">
                  <link role="applicableNode" targetNodeId="4208300936830679453" resolveInfo="typeConstraint" />
                </node>
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4208300936830679494">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679495">
                    <link role="variableDeclaration" targetNodeId="4208300936830679474" resolveInfo="type" />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936830679496">
                    <property name="value" value="type constraint constraint isn't permitted for the " />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4208300936830679497">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679498">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679499">
                  <link role="variableDeclaration" targetNodeId="4208300936830679474" resolveInfo="type" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830679500">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8479206315890976731">
                    <link role="conceptDeclaration" targetNodeId="1.8492289956116483184" resolveInfo="ObjectClassFieldType" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="8479206315887481253" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8479206315887481255">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8479206315887481256">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.RemarkStatement" id="8479206315887481277">
                <property name="value" value="TO DO - validate" />
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="8600224617539485151">
              <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
              <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617539485153">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617539485152">
                  <link role="applicableNode" targetNodeId="4208300936830679453" resolveInfo="typeConstraint" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8600224617539485157">
                  <link role="link" targetNodeId="1.5803918984630517454" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4208300936830679453">
      <property name="name" value="typeConstraint" />
      <link role="concept" targetNodeId="1.5803918984630517452" resolveInfo="TypeConstraint" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4208300936830679511">
    <property name="name" value="typeof_InnerTypeConstraint" />
    <property name="package" value="BuiltinType.ConstrainedType.SubtypeElements" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679512">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830679516">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936830679517">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.ParenthesizedExpression" id="4208300936830679572">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830679574">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679584">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679579">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679578">
                    <link role="applicableNode" targetNodeId="4208300936830679513" resolveInfo="innerTypeConstraint" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830679583">
                    <link role="link" targetNodeId="1.3016143038560372984" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830679588" />
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679518">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679519">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679567">
                    <link role="applicableNode" targetNodeId="4208300936830679513" resolveInfo="innerTypeConstraint" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830679571">
                    <link role="link" targetNodeId="1.3016143038560372987" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830679522" />
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679523">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679566">
              <link role="applicableNode" targetNodeId="4208300936830679513" resolveInfo="innerTypeConstraint" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830679525" />
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679526">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830679527">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830679528">
              <property name="name" value="refType" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="4208300936830679529">
                <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679530">
                  <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                </node>
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="4208300936830679531">
                <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="4208300936830679532">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                  <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679533">
                    <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                  </node>
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936830679534" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830679535">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830679536">
              <property name="name" value="type" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679537">
                <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679538">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679568">
                  <link role="applicableNode" targetNodeId="4208300936830679513" resolveInfo="innerTypeConstraint" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830679540">
                  <link role="baseMethodDeclaration" targetNodeId="2v.4208300936827883953" resolveInfo="getUnconstrainedType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830679541">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679542">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679543">
                <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830679544">
                <link role="baseMethodDeclaration" targetNodeId="2v.1048767958318509980" resolveInfo="getRootType" />
                <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679545">
                  <link role="variableDeclaration" targetNodeId="4208300936830679528" resolveInfo="refType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830679546">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="4208300936830679547">
              <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679548">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679549">
                  <link role="variableDeclaration" targetNodeId="4208300936830679528" resolveInfo="refType" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936830679550">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                </node>
              </node>
              <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679551">
                <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830679552">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679553">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936830679554">
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679570">
                  <link role="applicableNode" targetNodeId="4208300936830679513" resolveInfo="innerTypeConstraint" />
                </node>
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4208300936830679556">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679557">
                    <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936830679558">
                    <property name="value" value="inner type constraint constraint isn't permitted for the " />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4135453859681566556">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.ParenthesizedExpression" id="4135453859681566559">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4135453859681566572">
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859681566567">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859681566562">
                      <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4135453859681566561">
                        <link role="applicableNode" targetNodeId="4208300936830679513" resolveInfo="innerTypeConstraint" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4135453859681566566">
                        <link role="link" targetNodeId="1.3016143038560372984" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4135453859681566571" />
                  </node>
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4135453859681566579">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859681566575">
                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4135453859681566576">
                        <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4135453859681566577">
                        <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4135453859681566578">
                          <link role="conceptDeclaration" targetNodeId="1.1048767958318909864" resolveInfo="ICollectionOfType" />
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.ParenthesizedExpression" id="4135453859681566554">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4135453859681566540">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4208300936830679559">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830679634">
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830679623">
                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830679612">
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830679601">
                            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4208300936830679590">
                              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679560">
                                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679561">
                                  <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
                                </node>
                                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830679562">
                                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830679589">
                                    <link role="conceptDeclaration" targetNodeId="1.7401774347126901161" resolveInfo="ChoiceType" />
                                  </node>
                                </node>
                              </node>
                              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679594">
                                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679593">
                                  <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
                                </node>
                                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830679598">
                                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830679600">
                                    <link role="conceptDeclaration" targetNodeId="1.8702535492065480010" resolveInfo="EmbeddedPDVType" />
                                  </node>
                                </node>
                              </node>
                            </node>
                            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679605">
                              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679604">
                                <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
                              </node>
                              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830679609">
                                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830679611">
                                  <link role="conceptDeclaration" targetNodeId="1.1678051738089887717" resolveInfo="ExternalType" />
                                </node>
                              </node>
                            </node>
                          </node>
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679616">
                            <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679615">
                              <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
                            </node>
                            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830679620">
                              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830679622">
                                <link role="conceptDeclaration" targetNodeId="1.8702535492065480015" resolveInfo="RealType" />
                              </node>
                            </node>
                          </node>
                        </node>
                        <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679627">
                          <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679626">
                            <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830679631">
                            <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830679633">
                              <link role="conceptDeclaration" targetNodeId="1.2745703621025106475" resolveInfo="SequenceType" />
                            </node>
                          </node>
                        </node>
                      </node>
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679638">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679637">
                          <link role="variableDeclaration" targetNodeId="4208300936830679536" resolveInfo="type" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830679642">
                          <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830679644">
                            <link role="conceptDeclaration" targetNodeId="1.2917342674763025269" resolveInfo="SetType" />
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859681566549">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4135453859681566544">
                      <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4135453859681566543">
                        <link role="applicableNode" targetNodeId="4208300936830679513" resolveInfo="innerTypeConstraint" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4135453859681566548">
                        <link role="link" targetNodeId="1.3016143038560372987" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4135453859681566553" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4208300936830679513">
      <property name="name" value="innerTypeConstraint" />
      <link role="concept" targetNodeId="1.3016143038560360785" resolveInfo="InnerTypeConstraint" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4208300936830679658">
    <property name="name" value="typeof_PatternConstraint" />
    <property name="package" value="BuiltinType.ConstrainedType.SubtypeElements.PatternContraint" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679659">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830679661">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936830679662">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679663">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679664">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679712">
                <link role="applicableNode" targetNodeId="4208300936830679660" resolveInfo="patternConstraint" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936830679713">
                <link role="link" targetNodeId="1.2229019017266802959" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830679667" />
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679668">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679711">
              <link role="applicableNode" targetNodeId="4208300936830679660" resolveInfo="patternConstraint" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936830679670" />
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679671">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830679672">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830679673">
              <property name="name" value="refType" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="4208300936830679674">
                <link role="classifier" targetNodeId="2v.5089156505954230100" resolveInfo="Ref" />
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679675">
                  <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                </node>
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="4208300936830679676">
                <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="4208300936830679677">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230102" resolveInfo="Ref" />
                  <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679678">
                    <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                  </node>
                  <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="4208300936830679679" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="4208300936830679680">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="4208300936830679681">
              <property name="name" value="type" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="4208300936830679682">
                <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679683">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679714">
                  <link role="applicableNode" targetNodeId="4208300936830679660" resolveInfo="patternConstraint" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830679685">
                  <link role="baseMethodDeclaration" targetNodeId="2v.4208300936827883953" resolveInfo="getUnconstrainedType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830679686">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679687">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679688">
                <link role="variableDeclaration" targetNodeId="4208300936830679681" resolveInfo="type" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4208300936830679689">
                <link role="baseMethodDeclaration" targetNodeId="2v.1048767958318509980" resolveInfo="getRootType" />
                <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679690">
                  <link role="variableDeclaration" targetNodeId="4208300936830679673" resolveInfo="refType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4208300936830679691">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="4208300936830679692">
              <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679693">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679694">
                  <link role="variableDeclaration" targetNodeId="4208300936830679673" resolveInfo="refType" />
                </node>
                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4208300936830679695">
                  <link role="baseMethodDeclaration" targetNodeId="2v.5089156505954230152" resolveInfo="get" />
                </node>
              </node>
              <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679696">
                <link role="variableDeclaration" targetNodeId="4208300936830679681" resolveInfo="type" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936830679697">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936830679698">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936830679699">
                <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936830679716">
                  <link role="applicableNode" targetNodeId="4208300936830679660" resolveInfo="patternConstraint" />
                </node>
                <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4208300936830679701">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679702">
                    <link role="variableDeclaration" targetNodeId="4208300936830679681" resolveInfo="type" />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936830679703">
                    <property name="value" value="pattern constraint isn't permitted for the " />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4208300936830679704">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936830679705">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="4208300936830679706">
                  <link role="variableDeclaration" targetNodeId="4208300936830679681" resolveInfo="type" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936830679707">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936830679717">
                    <link role="conceptDeclaration" targetNodeId="1.1048767958318909860" resolveInfo="RestrictedCharacterStringType" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4208300936830679660">
      <property name="name" value="patternConstraint" />
      <link role="concept" targetNodeId="1.2229019017266790767" resolveInfo="PatternConstraint" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="4208300936835185205">
    <property name="name" value="typeof_ExceptElements" />
    <property name="package" value="BuiltinType.ConstrainedType.ConstraintSpecification.ElementSetSpecification" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936835185206">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4208300936835185208">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4208300936835185229">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936835185238">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936835185233">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936835185232">
                <link role="applicableNode" targetNodeId="4208300936835185207" resolveInfo="exceptElements" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936835245806">
                <link role="link" targetNodeId="1.946989413454767076" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4208300936835185242">
              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4208300936835185244">
                <link role="conceptDeclaration" targetNodeId="1.1046849219940989658" resolveInfo="ExceptElements" />
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936835185217">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936835185212">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936835185211">
                <link role="applicableNode" targetNodeId="4208300936835185207" resolveInfo="exceptElements" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936835245805">
                <link role="link" targetNodeId="1.946989413454767076" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="4208300936835185221" />
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4208300936835185210">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4208300936835185245">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4208300936835185248">
              <property name="value" value="Not permitted" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4208300936835358229">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4208300936835185249">
                <link role="applicableNode" targetNodeId="4208300936835185207" resolveInfo="exceptElements" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4208300936835358233">
                <link role="link" targetNodeId="1.946989413454767076" />
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4208300936835185207">
      <property name="name" value="exceptElements" />
      <link role="concept" targetNodeId="1.1046849219940989658" resolveInfo="ExceptElements" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="8926044065947191498">
    <property name="name" value="typeof_NamedConstraint" />
    <property name="package" value="NamedEntities.NamedConstraint" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8926044065947191499">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8926044065947191501">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947191505">
          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947191504">
            <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8926044065947191509">
            <link role="property" targetNodeId="1.2229019017265412910" resolveInfo="presenceConstraintVisible" />
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8926044065947191503">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8926044065947261946">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8926044065947261947">
              <property name="name" value="type" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8926044065947261948">
                <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947261958">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947261959">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947261960">
                    <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8926044065947261961">
                    <link role="link" targetNodeId="1.3452212975937747882" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="8926044065947261962">
                  <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="8926044065947261963">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8926044065947261964">
                      <link role="conceptDeclaration" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8926044065947261966">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8926044065947261967">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8926044065947262066">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8926044065947262067">
                  <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="8926044065947262068">
                    <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8926044065947262069">
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262070">
                        <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947262071">
                          <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8926044065947262072">
                          <link role="property" targetNodeId="1.2229019017265412911" resolveInfo="preseneConstraint" />
                        </node>
                      </node>
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8926044065947262073">
                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8926044065947262074">
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8926044065947262075">
                            <property name="value" value="The component " />
                          </node>
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262076">
                            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947262077">
                              <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                            </node>
                            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8926044065947262078">
                              <link role="property" targetNodeId="1.9020003798799556662" resolveInfo="id" />
                            </node>
                          </node>
                        </node>
                        <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8926044065947262079">
                          <property name="value" value=" must not be constrained to " />
                        </node>
                      </node>
                    </node>
                    <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947262080">
                      <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262083">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262084">
                    <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947262085">
                      <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8926044065947262086">
                      <link role="property" targetNodeId="1.2229019017265412911" resolveInfo="preseneConstraint" />
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Property_HasValue_Enum" id="8926044065947262087">
                    <node role="value" type="jetbrains.mps.lang.smodel.structure.EnumMemberReference" id="8926044065947262088">
                      <link role="enumMember" targetNodeId="1.2229019017265412909" />
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8320522650966917185">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8320522650966917186">
                  <property name="name" value="multipleTypeConstraint" />
                  <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8320522650966917187">
                    <link role="concept" targetNodeId="1.3016143038560372986" resolveInfo="MultipleTypeConstraint" />
                  </node>
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8320522650966917190">
                    <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8320522650966917189">
                      <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="8320522650966917194">
                      <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="8320522650966917195">
                        <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8320522650966917198">
                          <link role="conceptDeclaration" targetNodeId="1.3016143038560372986" resolveInfo="MultipleTypeConstraint" />
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8320522650966917215">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8320522650966917216">
                  <property name="name" value="presentCount" />
                  <node role="type" type="jetbrains.mps.baseLanguage.structure.IntegerType" id="8320522650966917217" />
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="8320522650966917219">
                    <property name="value" value="0" />
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="8320522650966917200">
                <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="8320522650966917201">
                  <property name="name" value="item" />
                </node>
                <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8320522650966917207">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8320522650966917205">
                    <link role="variableDeclaration" targetNodeId="8320522650966917186" resolveInfo="multipleTypeConstraint" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="8320522650966917212">
                    <link role="link" targetNodeId="1.2229019017265055566" />
                  </node>
                </node>
                <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8320522650966917203">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8320522650966917231">
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="8320522650966917251">
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8320522650966917268">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8320522650966917258">
                          <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="8320522650966917255">
                            <link role="variable" targetNodeId="8320522650966917201" resolveInfo="item" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8320522650966917265">
                            <link role="property" targetNodeId="1.2229019017265412911" resolveInfo="preseneConstraint" />
                          </node>
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Property_HasValue_Enum" id="8320522650966917273">
                          <node role="value" type="jetbrains.mps.lang.smodel.structure.EnumMemberReference" id="8320522650966917274">
                            <link role="enumMember" targetNodeId="1.2229019017265412907" />
                          </node>
                        </node>
                      </node>
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8320522650966917241">
                        <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="8320522650966917237">
                          <link role="variable" targetNodeId="8320522650966917201" resolveInfo="item" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8320522650966917248">
                          <link role="property" targetNodeId="1.2229019017265412910" resolveInfo="presenceConstraintVisible" />
                        </node>
                      </node>
                    </node>
                    <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8320522650966917233">
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8320522650966917276">
                        <node role="expression" type="jetbrains.mps.baseLanguage.structure.PostfixIncrementExpression" id="8320522650966917278">
                          <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8320522650966917279">
                            <link role="variableDeclaration" targetNodeId="8320522650966917216" resolveInfo="presentCount" />
                          </node>
                        </node>
                      </node>
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8320522650966917296">
                        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8320522650966917297">
                          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="8320522650966917298">
                            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8320522650966917305">
                              <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                            </node>
                            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8320522650966917304">
                              <property name="value" value="More than onc PRESENT constraint in a choice" />
                            </node>
                          </node>
                          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="8320522650966917307" />
                        </node>
                        <node role="condition" type="jetbrains.mps.baseLanguage.structure.GreaterThanExpression" id="8320522650966917301">
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="8320522650966917302">
                            <property name="value" value="1" />
                          </node>
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8320522650966917303">
                            <link role="variableDeclaration" targetNodeId="8320522650966917216" resolveInfo="presentCount" />
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947261971">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8926044065947261970">
                <link role="variableDeclaration" targetNodeId="8926044065947261947" resolveInfo="type" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="8926044065947261975">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8926044065947262065">
                  <link role="conceptDeclaration" targetNodeId="1.7401774347126901161" resolveInfo="ChoiceType" />
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="8926044065947262064" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8926044065947261979">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8926044065947261980">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8926044065947261993">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8926044065947261994">
                  <property name="name" value="componentType" />
                  <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8926044065947261995">
                    <link role="concept" targetNodeId="1.5108187754403599129" resolveInfo="ComponentType" />
                  </node>
                  <node role="initializer" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="8926044065947262003">
                    <link role="concept" targetNodeId="1.5108187754403599129" resolveInfo="ComponentType" />
                    <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947261998">
                      <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947261997">
                        <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8926044065947262002">
                        <link role="link" targetNodeId="1.3452212975937747882" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="8926044065947377927" />
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8926044065947262006">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8926044065947262007">
                  <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="8926044065947262036">
                    <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8926044065947262054">
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262058">
                        <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947262057">
                          <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8926044065947262062">
                          <link role="property" targetNodeId="1.2229019017265412911" resolveInfo="preseneConstraint" />
                        </node>
                      </node>
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8926044065947262050">
                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="8926044065947262040">
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8926044065947262039">
                            <property name="value" value="The component " />
                          </node>
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262045">
                            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947262044">
                              <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                            </node>
                            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8926044065947262049">
                              <link role="property" targetNodeId="1.9020003798799556662" resolveInfo="id" />
                            </node>
                          </node>
                        </node>
                        <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8926044065947262053">
                          <property name="value" value=" must not be constrained to " />
                        </node>
                      </node>
                    </node>
                    <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947262063">
                      <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="8926044065947262018">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="8926044065947262034">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262028">
                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262023">
                        <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8926044065947262022">
                          <link role="applicableNode" targetNodeId="8926044065947191500" resolveInfo="namedConstraint" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8926044065947262027">
                          <link role="property" targetNodeId="1.2229019017265412911" resolveInfo="preseneConstraint" />
                        </node>
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Property_HasValue_Enum" id="8926044065947262032">
                        <node role="value" type="jetbrains.mps.lang.smodel.structure.EnumMemberReference" id="8926044065947262033">
                          <link role="enumMember" targetNodeId="1.2229019017265412907" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="8926044065947262016">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947262011">
                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8926044065947262010">
                        <link role="variableDeclaration" targetNodeId="8926044065947261994" resolveInfo="componentType" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8926044065947262015">
                        <link role="property" targetNodeId="1.9152698315512589067" resolveInfo="isOptionalMarkPresent" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8926044065947261984">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8926044065947261983">
                <link role="variableDeclaration" targetNodeId="8926044065947261947" resolveInfo="type" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="8926044065947261988">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8926044065947261991">
                  <link role="conceptDeclaration" targetNodeId="1.6781117154622660736" resolveInfo="ComponentTypeList" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8926044065947191500">
      <property name="name" value="namedConstraint" />
      <link role="concept" targetNodeId="1.2229019017265055565" resolveInfo="NamedConstraint" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="8024414845767580762">
    <property name="name" value="typeof_ModuleDefinition" />
    <property name="package" value="ModuleDefinition" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845767580763">
      <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="8024414845767586657">
        <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="8024414845767586658">
          <property name="name" value="assignment" />
        </node>
        <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8024414845767589201">
          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8024414845767586662">
            <link role="applicableNode" targetNodeId="8024414845767580764" resolveInfo="definition" />
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="8024414845767589206">
            <link role="link" targetNodeId="1.4534048328789026148" />
          </node>
        </node>
        <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845767586660">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8024414845767664616">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8024414845767664617">
              <property name="name" value="count" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.IntegerType" id="8024414845767664618" />
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="8024414845767664774">
                <property name="value" value="0" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="8024414845767664776">
            <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="8024414845767664777">
              <property name="name" value="node" />
            </node>
            <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8024414845767664783">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8024414845767664781">
                <link role="applicableNode" targetNodeId="8024414845767580764" resolveInfo="moduleDefinition" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="8024414845767664789">
                <link role="link" targetNodeId="1.4534048328789026148" />
              </node>
            </node>
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845767664779">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8024414845767664792">
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="8024414845767664806">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8024414845767664812">
                    <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="8024414845767664809">
                      <link role="variable" targetNodeId="8024414845767586658" resolveInfo="assignment" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8024414845767664820">
                      <link role="property" targetNodeId="3v.1169194664001" resolveInfo="name" />
                    </node>
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8024414845767664798">
                    <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="8024414845767664795">
                      <link role="variable" targetNodeId="8024414845767664777" resolveInfo="node" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="8024414845767664804">
                      <link role="property" targetNodeId="3v.1169194664001" resolveInfo="name" />
                    </node>
                  </node>
                </node>
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845767664794">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8024414845767664823">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.PostfixIncrementExpression" id="8024414845767664825">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8024414845767664826">
                        <link role="variableDeclaration" targetNodeId="8024414845767664617" resolveInfo="count" />
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8024414845767664828">
                    <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845767664829">
                      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="8024414845767664838">
                        <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8024414845767664841">
                          <property name="value" value="Duplicate name" />
                        </node>
                        <node role="nodeToReport" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="8024414845767664842">
                          <link role="variable" targetNodeId="8024414845767664777" resolveInfo="node" />
                        </node>
                      </node>
                    </node>
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.GreaterThanExpression" id="8024414845767664833">
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8024414845767664832">
                        <link role="variableDeclaration" targetNodeId="8024414845767664617" resolveInfo="count" />
                      </node>
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="8024414845767664837">
                        <property name="value" value="1" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8024414845767580764">
      <property name="name" value="moduleDefinition" />
      <link role="concept" targetNodeId="1.903970212124558174" resolveInfo="ModuleDefinition" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="8024414845768828500">
    <property name="name" value="typeof_DefaultSyntax" />
    <property name="package" value="Object.DefaultSyntax" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845768828501">
      <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="8024414845768828503">
        <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="8024414845768828504">
          <property name="name" value="fieldSetting" />
        </node>
        <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8024414845768828510">
          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8024414845768828508">
            <link role="applicableNode" targetNodeId="8024414845768828502" resolveInfo="defaultSyntax" />
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="8024414845768828515">
            <link role="link" targetNodeId="1.7585540365174766569" />
          </node>
        </node>
        <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845768828506">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8024414845768828534">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8024414845768828535">
              <property name="name" value="count" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.IntegerType" id="8024414845768828536" />
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="8024414845768828538">
                <property name="value" value="0" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="8024414845768828517">
            <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="8024414845768828518">
              <property name="name" value="setting" />
            </node>
            <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8024414845768828524">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8024414845768828522">
                <link role="applicableNode" targetNodeId="8024414845768828502" resolveInfo="defaultSyntax" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="8024414845768828530">
                <link role="link" targetNodeId="1.7585540365174766569" />
              </node>
            </node>
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845768828520">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8024414845768828539">
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="8024414845768828562">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8024414845768944632">
                    <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="8024414845768828567">
                      <link role="variable" targetNodeId="8024414845768828518" resolveInfo="setting" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8024414845768944640">
                      <link role="link" targetNodeId="1.8840847807369306526" />
                    </node>
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8024414845768944619">
                    <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="8024414845768828542">
                      <link role="variable" targetNodeId="8024414845768828504" resolveInfo="fieldSetting" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8024414845768944627">
                      <link role="link" targetNodeId="1.8840847807369306526" />
                    </node>
                  </node>
                </node>
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845768828541">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8024414845768828603">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.PostfixIncrementExpression" id="8024414845768828605">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8024414845768828606">
                        <link role="variableDeclaration" targetNodeId="8024414845768828535" resolveInfo="count" />
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8024414845768828608">
                    <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8024414845768828609">
                      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="8024414845768828617">
                        <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="8024414845768828620">
                          <property name="value" value="Duplicate field" />
                        </node>
                        <node role="nodeToReport" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="8024414845768828622">
                          <link role="variable" targetNodeId="8024414845768828518" resolveInfo="setting" />
                        </node>
                      </node>
                    </node>
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.GreaterThanExpression" id="8024414845768828613">
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="8024414845768828616">
                        <property name="value" value="1" />
                      </node>
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8024414845768828612">
                        <link role="variableDeclaration" targetNodeId="8024414845768828535" resolveInfo="count" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8024414845768828502">
      <property name="name" value="defaultSyntax" />
      <link role="concept" targetNodeId="1.1678051738093708052" resolveInfo="DefaultSyntax" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="3310844120969418987">
    <property name="name" value="typeof_FieldSpecificationReference" />
    <property name="package" value="ObjectClass.WithSyntaxSpecification" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120969418988">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3310844120969418990">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3310844120969418991">
          <property name="name" value="isInOptionalGroup" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="3310844120969418992" />
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120969419005">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120969418996">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120969418995">
                <link role="applicableNode" targetNodeId="3310844120969418989" resolveInfo="fieldSpecificationReference" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="3310844120969419000">
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="3310844120969419001">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3310844120969419004">
                    <link role="conceptDeclaration" targetNodeId="1.3310844120967499075" resolveInfo="OptionalGroup" />
                  </node>
                </node>
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="3310844120969419009" />
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1513709065121334335">
        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1513709065121334336">
          <property name="name" value="isOptionalField" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="1513709065121334337" />
          <node role="initializer" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="1513709065121334346">
            <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1513709065121334347">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1513709065121334348">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1513709065121334349">
                  <link role="applicableNode" targetNodeId="3310844120969418989" resolveInfo="fieldSpecificationReference" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1513709065121334350">
                  <link role="link" targetNodeId="1.3310844120967499105" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="1513709065121334351">
                <link role="property" targetNodeId="1.5019664383912897433" resolveInfo="optionalMark" />
              </node>
            </node>
            <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1513709065121334352">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1513709065121334353">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1513709065121334354">
                  <link role="applicableNode" targetNodeId="3310844120969418989" resolveInfo="fieldSpecificationReference" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1513709065121334355">
                  <link role="link" targetNodeId="1.3310844120967499105" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="1513709065121334356">
                <link role="property" targetNodeId="1.5019664383912897434" resolveInfo="defaultMark" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3310844120969419011">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120969419012">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="3310844120969419065">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="3310844120969419082">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="3310844120969419085">
                <property name="value" value=" is mandatory in the object class definition and must appear in a mandatory group specification" />
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="3310844120969419069">
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="3310844120969419068">
                  <property name="value" value="The field " />
                </node>
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120969419073">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120969419072">
                    <link role="applicableNode" targetNodeId="3310844120969418989" resolveInfo="fieldSpecificationReference" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120969419077">
                    <link role="link" targetNodeId="1.3310844120967499105" />
                  </node>
                </node>
              </node>
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120969419086">
              <link role="applicableNode" targetNodeId="3310844120969418989" resolveInfo="fieldSpecificationReference" />
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="3310844120969419061">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3310844120969419064">
            <link role="variableDeclaration" targetNodeId="3310844120969418991" resolveInfo="isInOptionalGroup" />
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="3310844120969419048">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1513709065121334357">
              <link role="variableDeclaration" targetNodeId="1513709065121334336" resolveInfo="isOptionalField" />
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1513709065121334359">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1513709065121334360">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="1513709065121334375">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="1513709065121334376">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="1513709065121334377">
                <property name="value" value=" is optional in the object class definition and must appear in an optional group specification" />
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="1513709065121334378">
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="1513709065121334379">
                  <property name="value" value="The field " />
                </node>
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1513709065121334380">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1513709065121334381">
                    <link role="applicableNode" targetNodeId="3310844120969418989" resolveInfo="fieldSpecificationReference" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1513709065121334382">
                    <link role="link" targetNodeId="1.3310844120967499105" />
                  </node>
                </node>
              </node>
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1513709065121334383">
              <link role="applicableNode" targetNodeId="3310844120969418989" resolveInfo="fieldSpecificationReference" />
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="1513709065121334369">
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1513709065121334365">
            <link role="variableDeclaration" targetNodeId="1513709065121334336" resolveInfo="isOptionalField" />
          </node>
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="1513709065121334372">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1513709065121334374">
              <link role="variableDeclaration" targetNodeId="3310844120969418991" resolveInfo="isInOptionalGroup" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="3310844120969418989">
      <property name="name" value="fieldSpecificationReference" />
      <link role="concept" targetNodeId="1.3310844120967499104" resolveInfo="FieldSpecificationReference" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="3310844120970623441">
    <property name="name" value="typeof_WithSyntaxSpecification" />
    <property name="package" value="ObjectClass.WithSyntaxSpecification" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120970623442">
      <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="3310844120970623444">
        <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="3310844120970623445">
          <property name="name" value="token" />
        </node>
        <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120970623451">
          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120970623449">
            <link role="applicableNode" targetNodeId="3310844120970623443" resolveInfo="specification" />
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="3310844120970630367">
            <link role="baseMethodDeclaration" targetNodeId="2v.3310844120970628947" resolveInfo="getTokens" />
          </node>
        </node>
        <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120970623447">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3310844120970765007">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120970765008">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3310844120970765032">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3310844120970765033">
                  <property name="name" value="count" />
                  <node role="type" type="jetbrains.mps.baseLanguage.structure.IntegerType" id="3310844120970765034" />
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="3310844120970765035">
                    <property name="value" value="0" />
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="3310844120970765036">
                <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="3310844120970765037">
                  <property name="name" value="token2" />
                </node>
                <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120970765038">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3310844120970765039">
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="3310844120970765067">
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120970765075">
                        <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="3310844120970765072">
                          <link role="variable" targetNodeId="3310844120970765037" resolveInfo="token2" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="3310844120970765083">
                          <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3310844120970765087">
                            <link role="conceptDeclaration" targetNodeId="1.3310844120967499104" resolveInfo="FieldSpecificationReference" />
                          </node>
                        </node>
                      </node>
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="3310844120970765040">
                        <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120970765121">
                          <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="3310844120970765113">
                            <link role="concept" targetNodeId="1.3310844120967499104" resolveInfo="FieldSpecificationReference" />
                            <node role="leftExpression" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="3310844120970765041">
                              <link role="variable" targetNodeId="3310844120970765037" resolveInfo="token2" />
                            </node>
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120970765129">
                            <link role="link" targetNodeId="1.3310844120967499105" />
                          </node>
                        </node>
                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120970765100">
                          <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="3310844120970765092">
                            <link role="concept" targetNodeId="1.3310844120967499104" resolveInfo="FieldSpecificationReference" />
                            <node role="leftExpression" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="3310844120970765042">
                              <link role="variable" targetNodeId="3310844120970623445" resolveInfo="token" />
                            </node>
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3310844120970765108">
                            <link role="link" targetNodeId="1.3310844120967499105" />
                          </node>
                        </node>
                      </node>
                    </node>
                    <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120970765043">
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="3310844120970765044">
                        <node role="expression" type="jetbrains.mps.baseLanguage.structure.PostfixIncrementExpression" id="3310844120970765045">
                          <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3310844120970765046">
                            <link role="variableDeclaration" targetNodeId="3310844120970765033" resolveInfo="count" />
                          </node>
                        </node>
                      </node>
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3310844120970765047">
                        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3310844120970765048">
                          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="5497328087138421969">
                            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="5497328087138421970">
                              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="5497328087138421971">
                                <property name="value" value=" must appear just once in the SyntaxLit" />
                              </node>
                              <node role="leftExpression" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="5497328087138421974">
                                <link role="variable" targetNodeId="3310844120970765037" resolveInfo="token2" />
                              </node>
                            </node>
                            <node role="nodeToReport" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="5497328087138421975">
                              <link role="variable" targetNodeId="3310844120970765037" resolveInfo="token2" />
                            </node>
                          </node>
                        </node>
                        <node role="condition" type="jetbrains.mps.baseLanguage.structure.GreaterThanExpression" id="3310844120970765052">
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="3310844120970765053">
                            <property name="value" value="1" />
                          </node>
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3310844120970765054">
                            <link role="variableDeclaration" targetNodeId="3310844120970765033" resolveInfo="count" />
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
                <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120970765055">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3310844120970765056">
                    <link role="applicableNode" targetNodeId="3310844120970623443" resolveInfo="specification" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="3310844120970765057">
                    <link role="baseMethodDeclaration" targetNodeId="2v.3310844120970628947" resolveInfo="getTokens" />
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3310844120970765014">
              <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="3310844120970765011">
                <link role="variable" targetNodeId="3310844120970623445" resolveInfo="token" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="3310844120970765022">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3310844120970765026">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120967499104" resolveInfo="FieldSpecificationReference" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="3310844120970623443">
      <property name="name" value="specification" />
      <link role="concept" targetNodeId="1.1678051738087227679" resolveInfo="WithSyntaxSpecification" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="2734934296510076838">
    <property name="name" value="typeof_FieldSpecificationValue" />
    <property name="package" value="Object.DefinedSyntax" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2734934296510076839">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2734934296510098207">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2734934296510176068">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2734934296510176071">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510176084">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510176074">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510176073">
                  <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2734934296510176078">
                  <link role="link" targetNodeId="1.2734934296508716883" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2734934296510176088">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2734934296510176090">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966287312" resolveInfo="TypeSetting" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510100748">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510176079">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510098210">
                <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2734934296510176083">
                <link role="link" targetNodeId="1.2220938206951302945" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2734934296510100757">
              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2734934296510100759">
                <link role="conceptDeclaration" targetNodeId="1.1678051738085519740" resolveInfo="TypeFieldSpecification" />
              </node>
            </node>
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2734934296510098209">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2734934296510176091">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2734934296510176094">
              <property name="value" value="type expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510176095">
              <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2734934296510296330" />
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="2734934296510202950" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2734934296510218426">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2734934296510218427">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2734934296510296324">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2734934296510296327">
              <property name="value" value="value expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510296328">
              <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2734934296510296332" />
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="1207830782279978827">
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.ParenthesizedExpression" id="1207830782279978828">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="1207830782279978829">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782279978830">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782279978831">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782279978832">
                    <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782279978833">
                    <link role="link" targetNodeId="1.2220938206951302945" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1207830782279978834">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782279978835">
                    <link role="conceptDeclaration" targetNodeId="1.5019664383912092258" resolveInfo="VariableTypeValueFieldSpecification" />
                  </node>
                </node>
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782279978836">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782279978837">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782279978838">
                    <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782279978839">
                    <link role="link" targetNodeId="1.2220938206951302945" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1207830782279978840">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782279978841">
                    <link role="conceptDeclaration" targetNodeId="1.1678051738086112479" resolveInfo="FixedTypeValueFieldSpecification" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="1207830782279978842">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782279978843">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782279978844">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782279978845">
                  <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782279978846">
                  <link role="link" targetNodeId="1.2734934296508716883" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1207830782279978847">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782279978848">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966299508" resolveInfo="ValueSetting" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="1207830782280097098" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1207830782280097070">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280097071">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="1207830782280097072">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="1207830782280097073">
              <property name="value" value="value-set expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782280097074">
              <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="1207830782280097075" />
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="1207830782280097076">
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.ParenthesizedExpression" id="1207830782280097077">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="1207830782280097078">
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280097079">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280097080">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782280097081">
                    <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782280097082">
                    <link role="link" targetNodeId="1.2220938206951302945" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1207830782280097083">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782280097100">
                    <link role="conceptDeclaration" targetNodeId="1.1678051738087053424" resolveInfo="VariableTypeValueSetFieldSpecification" />
                  </node>
                </node>
              </node>
              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280097085">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280097086">
                  <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782280097087">
                    <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782280097088">
                    <link role="link" targetNodeId="1.2220938206951302945" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1207830782280097089">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782280097099">
                    <link role="conceptDeclaration" targetNodeId="1.1678051738086882207" resolveInfo="FixedTypeValueSetFieldSpecification" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="1207830782280097091">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280097092">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280097093">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782280097094">
                  <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782280097095">
                  <link role="link" targetNodeId="1.2734934296508716883" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1207830782280097096">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782280097101">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966299514" resolveInfo="ValueSetSetting" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="2734934296510296366" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2734934296510296397">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2734934296510296398">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2734934296510296399">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510296400">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510296401">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510296402">
                  <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2734934296510296403">
                  <link role="link" targetNodeId="1.2734934296508716883" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2734934296510296404">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2734934296510296418">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966299519" resolveInfo="ObjectSetting" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510296406">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510296407">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510296408">
                <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2734934296510296409">
                <link role="link" targetNodeId="1.2220938206951302945" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2734934296510296410">
              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2734934296510296417">
                <link role="conceptDeclaration" targetNodeId="1.1872831763373921330" resolveInfo="ObjectFieldSpecification" />
              </node>
            </node>
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2734934296510296412">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2734934296510296413">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2734934296510296414">
              <property name="value" value="object expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510296415">
              <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2734934296510296416" />
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="2734934296510296419" />
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2734934296510296421">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="2734934296510296422">
          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2734934296510296423">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510296424">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510296425">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510296426">
                  <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2734934296510296427">
                  <link role="link" targetNodeId="1.2734934296508716883" />
                </node>
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2734934296510296428">
                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2734934296510296442">
                  <link role="conceptDeclaration" targetNodeId="1.3310844120966299524" resolveInfo="ObjectSetSetting" />
                </node>
              </node>
            </node>
          </node>
          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510296430">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2734934296510296431">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510296432">
                <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2734934296510296433">
                <link role="link" targetNodeId="1.2220938206951302945" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2734934296510296434">
              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2734934296510296441">
                <link role="conceptDeclaration" targetNodeId="1.1872831763374761427" resolveInfo="ObjectSetFieldSpecification" />
              </node>
            </node>
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2734934296510296436">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="2734934296510296437">
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2734934296510296438">
              <property name="value" value="object-set expected" />
            </node>
            <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2734934296510296439">
              <link role="applicableNode" targetNodeId="2734934296510076840" resolveInfo="specValue" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2734934296510296440" />
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="2734934296510076840">
      <property name="name" value="specValue" />
      <link role="concept" targetNodeId="1.2220938206951302943" resolveInfo="FieldSpecificationValue" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="1207830782280411869">
    <property name="name" value="typeof_ObjectClassDefn" />
    <property name="package" value="ObjectClass" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280411870">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1207830782280411872">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280411874">
          <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="1207830782280411886">
            <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="1207830782280411887">
              <property name="name" value="fieldSpec" />
            </node>
            <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280411893">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782280411891">
                <link role="applicableNode" targetNodeId="1207830782280411871" resolveInfo="objectClassDefn" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="1207830782280411898">
                <link role="link" targetNodeId="1.1678051738087227665" />
              </node>
            </node>
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280411889">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1207830782280411980">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280411981">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1207830782280412044">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1207830782280412045">
                      <property name="name" value="tokens" />
                      <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="1207830782280412046">
                        <link role="elementConcept" targetNodeId="1.3310844120967499071" resolveInfo="TokenOrGroupSpecification" />
                      </node>
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280412047">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280412048">
                          <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782280412049">
                            <link role="applicableNode" targetNodeId="1207830782280411871" resolveInfo="objectClassDefn" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782280412050">
                            <link role="link" targetNodeId="1.1678051738087534715" />
                          </node>
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="1207830782280412051">
                          <link role="link" targetNodeId="1.3310844120968524665" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="1207830782280412052" />
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1207830782280412053">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1207830782280412054">
                      <property name="name" value="index" />
                      <node role="type" type="jetbrains.mps.baseLanguage.structure.IntegerType" id="1207830782280412055" />
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="1207830782280412056">
                        <property name="value" value="0" />
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1207830782280412087">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1207830782280412088">
                      <property name="name" value="isFound" />
                      <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="5497328087138421978" />
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.BooleanConstant" id="5497328087138421979">
                        <property name="value" value="false" />
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1207830782280412061">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1207830782280412062">
                      <property name="name" value="isEndOfTokens" />
                      <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="1207830782280412063" />
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.BooleanConstant" id="1207830782280412064">
                        <property name="value" value="false" />
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1207830782280412065">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1207830782280412066">
                      <property name="name" value="searchContextStack" />
                      <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="1207830782280412067">
                        <link role="classifier" targetNodeId="6.~Stack" resolveInfo="Stack" />
                        <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="1207830782280412068">
                          <link role="classifier" targetNodeId="2v.5248658328126330914" resolveInfo="Tuple" />
                          <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="1207830782280412069">
                            <link role="elementConcept" targetNodeId="1.3310844120967499071" resolveInfo="TokenOrGroupSpecification" />
                          </node>
                          <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="1207830782280412070">
                            <link role="classifier" targetNodeId="2.~Integer" resolveInfo="Integer" />
                          </node>
                        </node>
                      </node>
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="1207830782280412071">
                        <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="1207830782280412072">
                          <link role="baseMethodDeclaration" targetNodeId="6.~Stack.&lt;init&gt;()" resolveInfo="Stack" />
                          <node role="typeParameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="1207830782280412073">
                            <link role="classifier" targetNodeId="2v.5248658328126330914" resolveInfo="Tuple" />
                            <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="1207830782280412074">
                              <link role="elementConcept" targetNodeId="1.3310844120967499071" resolveInfo="TokenOrGroupSpecification" />
                            </node>
                            <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="1207830782280412075">
                              <link role="classifier" targetNodeId="2.~Integer" resolveInfo="Integer" />
                            </node>
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.DoWhileStatement" id="1207830782280412076">
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="1207830782280412077">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280412079">
                        <link role="variableDeclaration" targetNodeId="1207830782280412062" resolveInfo="isEndOfTokens" />
                      </node>
                    </node>
                    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280412081">
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="1207830782280412082">
                        <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="1207830782280412083">
                          <property name="name" value="token" />
                          <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="1207830782280412084">
                            <link role="concept" targetNodeId="1.3310844120967499071" resolveInfo="TokenOrGroupSpecification" />
                          </node>
                          <node role="initializer" type="jetbrains.mps.baseLanguage.collections.structure.ListElementAccessExpression" id="1207830782280412093">
                            <node role="index" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280412097">
                              <link role="variableDeclaration" targetNodeId="1207830782280412054" resolveInfo="index" />
                            </node>
                            <node role="list" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280412092">
                              <link role="variableDeclaration" targetNodeId="1207830782280412045" resolveInfo="tokens" />
                            </node>
                          </node>
                        </node>
                      </node>
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1207830782280412100">
                        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280412101">
                          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1207830782280412149">
                            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280412150">
                              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="1207830782280412165">
                                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280412167">
                                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280412166">
                                    <link role="variableDeclaration" targetNodeId="1207830782280412066" resolveInfo="searchContextStack" />
                                  </node>
                                  <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="1207830782280412171">
                                    <link role="baseMethodDeclaration" targetNodeId="6.~Stack.push(java.lang.Object):java.lang.Object" resolveInfo="push" />
                                    <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.GenericNewExpression" id="1207830782280412178">
                                      <node role="creator" type="jetbrains.mps.baseLanguage.structure.ClassCreator" id="1207830782280423867">
                                        <link role="baseMethodDeclaration" targetNodeId="2v.5248658328126330916" resolveInfo="Tuple" />
                                        <node role="typeParameter" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="1207830782280423871">
                                          <link role="elementConcept" targetNodeId="1.3310844120967499071" resolveInfo="TokenOrGroupSpecification" />
                                        </node>
                                        <node role="typeParameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="1207830782280423876">
                                          <link role="classifier" targetNodeId="2.~Integer" resolveInfo="Integer" />
                                        </node>
                                        <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280423882">
                                          <link role="variableDeclaration" targetNodeId="1207830782280412045" resolveInfo="tokens" />
                                        </node>
                                        <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280423890">
                                          <link role="variableDeclaration" targetNodeId="1207830782280412054" resolveInfo="index" />
                                        </node>
                                      </node>
                                    </node>
                                  </node>
                                </node>
                              </node>
                              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="1207830782280423895">
                                <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="1207830782280423897">
                                  <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280423907">
                                    <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="1207830782280423903">
                                      <link role="concept" targetNodeId="1.3310844120967499075" resolveInfo="OptionalGroup" />
                                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280423900">
                                        <link role="variableDeclaration" targetNodeId="1207830782280412083" resolveInfo="token" />
                                      </node>
                                    </node>
                                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="1207830782280423913">
                                      <link role="link" targetNodeId="1.3310844120968524665" />
                                    </node>
                                  </node>
                                  <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280423896">
                                    <link role="variableDeclaration" targetNodeId="1207830782280412045" resolveInfo="tokens" />
                                  </node>
                                </node>
                              </node>
                              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="1207830782280423915">
                                <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="1207830782280423917">
                                  <node role="rValue" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="1207830782280423920">
                                    <property name="value" value="-1" />
                                  </node>
                                  <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280423916">
                                    <link role="variableDeclaration" targetNodeId="1207830782280412054" resolveInfo="index" />
                                  </node>
                                </node>
                              </node>
                            </node>
                            <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280412156">
                              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280412153">
                                <link role="variableDeclaration" targetNodeId="1207830782280412083" resolveInfo="token" />
                              </node>
                              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1207830782280412162">
                                <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782280412164">
                                  <link role="conceptDeclaration" targetNodeId="1.3310844120967499075" resolveInfo="OptionalGroup" />
                                </node>
                              </node>
                            </node>
                            <node role="elsifClauses" type="jetbrains.mps.baseLanguage.structure.ElsifClause" id="1207830782280423927">
                              <node role="statementList" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280423929">
                                <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="1207830782280423979">
                                  <node role="condition" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="1207830782280423985">
                                    <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280424013">
                                      <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="1207830782280424005">
                                        <link role="concept" targetNodeId="1.3310844120967499104" resolveInfo="FieldSpecificationReference" />
                                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280423990">
                                          <link role="variableDeclaration" targetNodeId="1207830782280412083" resolveInfo="token" />
                                        </node>
                                      </node>
                                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782280424021">
                                        <link role="link" targetNodeId="1.3310844120967499105" />
                                      </node>
                                    </node>
                                    <node role="leftExpression" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1207830782280423982">
                                      <link role="variable" targetNodeId="1207830782280411887" resolveInfo="fieldSpec" />
                                    </node>
                                  </node>
                                  <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="1207830782280423981">
                                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="5497328087138421982">
                                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="5497328087138421984">
                                        <node role="rValue" type="jetbrains.mps.baseLanguage.structure.BooleanConstant" id="5497328087138421987">
                                          <property name="value" value="true" />
                                        </node>
                                        <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="5497328087138421983">
                                          <link role="variableDeclaration" targetNodeId="1207830782280412088" resolveInfo="isFound" />
                                        </node>
                                      </node>
                                    </node>
                                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.BreakStatement" id="5043104934574108378" />
                                  </node>
                                </node>
                              </node>
                              <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280423935">
                                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280423932">
                                  <link role="variableDeclaration" targetNodeId="1207830782280412083" resolveInfo="token" />
                                </node>
                                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="1207830782280423976">
                                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782280423978">
                                    <link role="conceptDeclaration" targetNodeId="1.3310844120967499104" resolveInfo="FieldSpecificationReference" />
                                  </node>
                                </node>
                              </node>
                            </node>
                          </node>
                        </node>
                        <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="1207830782280412145">
                          <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280412125">
                            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280412112">
                              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="1207830782280412104">
                                <link role="variableDeclaration" targetNodeId="1207830782280412083" resolveInfo="token" />
                              </node>
                              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetConceptOperation" id="1207830782280412118" />
                            </node>
                            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Concept_IsExactlyOperation" id="1207830782280412134">
                              <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782280412138">
                                <link role="conceptDeclaration" targetNodeId="1.3310844120967499071" resolveInfo="TokenOrGroupSpecification" />
                              </node>
                            </node>
                          </node>
                        </node>
                      </node>
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="2261294124727037438" />
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2261294124727035093">
                        <node role="expression" type="jetbrains.mps.baseLanguage.structure.PostfixIncrementExpression" id="2261294124727035094">
                          <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035095">
                            <link role="variableDeclaration" targetNodeId="1207830782280412054" resolveInfo="index" />
                          </node>
                        </node>
                      </node>
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.WhileStatement" id="2261294124727035096">
                        <node role="condition" type="jetbrains.mps.baseLanguage.structure.GreaterThanOrEqualsExpression" id="2261294124727035097">
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2261294124727035098">
                            <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035099">
                              <link role="variableDeclaration" targetNodeId="1207830782280412045" resolveInfo="tokens" />
                            </node>
                            <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" id="2261294124727035100" />
                          </node>
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035101">
                            <link role="variableDeclaration" targetNodeId="1207830782280412054" resolveInfo="index" />
                          </node>
                        </node>
                        <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2261294124727035102">
                          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2261294124727035103">
                            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2261294124727035104">
                              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2261294124727035105">
                                <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="2261294124727035106">
                                  <node role="rValue" type="jetbrains.mps.baseLanguage.structure.BooleanConstant" id="2261294124727035107">
                                    <property name="value" value="true" />
                                  </node>
                                  <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035108">
                                    <link role="variableDeclaration" targetNodeId="1207830782280412062" resolveInfo="isEndOfTokens" />
                                  </node>
                                </node>
                              </node>
                              <node role="statement" type="jetbrains.mps.baseLanguage.structure.BreakStatement" id="2261294124727035109" />
                            </node>
                            <node role="condition" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="2261294124727035110">
                              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="2261294124727035111">
                                <property name="value" value="0" />
                              </node>
                              <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2261294124727035112">
                                <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035113">
                                  <link role="variableDeclaration" targetNodeId="1207830782280412066" resolveInfo="searchContextStack" />
                                </node>
                                <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="2261294124727035114">
                                  <link role="baseMethodDeclaration" targetNodeId="6.~Vector.size():int" resolveInfo="size" />
                                </node>
                              </node>
                            </node>
                            <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="2261294124727035115">
                              <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2261294124727035116">
                                <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2261294124727035117">
                                  <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2261294124727035118">
                                    <property name="name" value="tuple" />
                                    <node role="type" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="2261294124727035119">
                                      <link role="classifier" targetNodeId="2v.5248658328126330914" resolveInfo="Tuple" />
                                      <node role="parameter" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="2261294124727035120">
                                        <link role="elementConcept" targetNodeId="1.3310844120967499071" resolveInfo="TokenOrGroupSpecification" />
                                      </node>
                                      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="2261294124727035121">
                                        <link role="classifier" targetNodeId="2.~Integer" resolveInfo="Integer" />
                                      </node>
                                    </node>
                                    <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2261294124727035122">
                                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035123">
                                        <link role="variableDeclaration" targetNodeId="1207830782280412066" resolveInfo="searchContextStack" />
                                      </node>
                                      <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="2261294124727035124">
                                        <link role="baseMethodDeclaration" targetNodeId="6.~Stack.pop():java.lang.Object" resolveInfo="pop" />
                                      </node>
                                    </node>
                                  </node>
                                </node>
                                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2261294124727035125">
                                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="2261294124727035126">
                                    <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2261294124727035127">
                                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035128">
                                        <link role="variableDeclaration" targetNodeId="2261294124727035118" resolveInfo="tuple" />
                                      </node>
                                      <node role="operation" type="jetbrains.mps.baseLanguage.structure.FieldReferenceOperation" id="2261294124727035129">
                                        <link role="fieldDeclaration" targetNodeId="2v.5248658328126330922" resolveInfo="field1" />
                                      </node>
                                    </node>
                                    <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035130">
                                      <link role="variableDeclaration" targetNodeId="1207830782280412045" resolveInfo="tokens" />
                                    </node>
                                  </node>
                                </node>
                                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2261294124727035131">
                                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="2261294124727035132">
                                    <node role="rValue" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2261294124727035133">
                                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.IntegerConstant" id="2261294124727035134">
                                        <property name="value" value="1" />
                                      </node>
                                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2261294124727035135">
                                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035136">
                                          <link role="variableDeclaration" targetNodeId="2261294124727035118" resolveInfo="tuple" />
                                        </node>
                                        <node role="operation" type="jetbrains.mps.baseLanguage.structure.FieldReferenceOperation" id="2261294124727035137">
                                          <link role="fieldDeclaration" targetNodeId="2v.5248658328126330926" resolveInfo="field2" />
                                        </node>
                                      </node>
                                    </node>
                                    <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2261294124727035138">
                                      <link role="variableDeclaration" targetNodeId="1207830782280412054" resolveInfo="index" />
                                    </node>
                                  </node>
                                </node>
                              </node>
                            </node>
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="5043104934574108376" />
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="5497328087138421990">
                    <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="5497328087138421991">
                      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="5497328087138421997">
                        <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="5497328087138422001">
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="5497328087138422004">
                            <link role="variable" targetNodeId="1207830782280411887" resolveInfo="fieldSpec" />
                          </node>
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="5497328087138422000">
                            <property name="value" value=" in the SyntaxList expected" />
                          </node>
                        </node>
                        <node role="nodeToReport" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="5497328087138422005">
                          <link role="applicableNode" targetNodeId="1207830782280411871" resolveInfo="objectClassDefn" />
                        </node>
                      </node>
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="3364863830653971586" />
                    </node>
                    <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="5497328087138421994">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="5497328087138421996">
                        <link role="variableDeclaration" targetNodeId="1207830782280412088" resolveInfo="isFound" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="1207830782280412000">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="1207830782280412003">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280412023">
                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280412008">
                        <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1207830782280412005">
                          <link role="variable" targetNodeId="1207830782280411887" resolveInfo="fieldSpec" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetConceptOperation" id="1207830782280412015" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Concept_IsExactlyOperation" id="1207830782280412033">
                        <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="1207830782280412037">
                          <link role="conceptDeclaration" targetNodeId="1.1678051738085519718" resolveInfo="IFieldSpecification" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280411987">
                    <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="1207830782280411984">
                      <link role="variable" targetNodeId="1207830782280411887" resolveInfo="fieldSpec" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="1207830782280411995" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280411881">
          <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="1207830782280411876">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="1207830782280411875">
              <link role="applicableNode" targetNodeId="1207830782280411871" resolveInfo="objectClassDefn" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="1207830782280411880">
              <link role="link" targetNodeId="1.1678051738087534715" />
            </node>
          </node>
          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="1207830782280411885" />
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="1207830782280411871">
      <property name="name" value="objectClassDefn" />
      <link role="concept" targetNodeId="1.1678051738087227663" resolveInfo="ObjectClassDefn" />
    </node>
  </node>
  <visible index="4" modelUID="r:00000000-0000-4000-0000-011c895902b5(jetbrains.mps.lang.typesystem.dependencies)" />
  <node type="jetbrains.mps.baseLanguage.structure.ClassConcept" id="2103069454648604109">
    <property name="name" value="CheckingRules" />
    <node role="staticMethod" type="jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration" id="2103069454648604115">
      <property name="name" value="checkObject" />
      <node role="returnType" type="jetbrains.mps.baseLanguage.structure.VoidType" id="2103069454648604116" />
      <node role="visibility" type="jetbrains.mps.baseLanguage.structure.PublicVisibility" id="2103069454648604117" />
      <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2103069454648604118">
        <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2103069454648604131">
          <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2103069454648604132">
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2118074201061923343">
              <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2118074201061923344">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2118074201061923355">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2118074201061923356">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="2118074201061923357">
                      <link role="variableDeclaration" targetNodeId="2103069454648604119" resolveInfo="objectClass" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="2118074201061923358">
                      <link role="baseMethodDeclaration" targetNodeId="2v.2118074201061921712" resolveInfo="validateObject" />
                      <node role="actualArgument" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="2118074201061923360">
                        <link role="concept" targetNodeId="1.8479206315888552459" resolveInfo="ObjectDefn" />
                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="2118074201061923359">
                          <link role="variableDeclaration" targetNodeId="2103069454648604121" resolveInfo="object" />
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2118074201061923348">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="2118074201061923347">
                  <link role="variableDeclaration" targetNodeId="2103069454648604121" resolveInfo="object" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2118074201061923352">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2118074201061923354">
                    <link role="conceptDeclaration" targetNodeId="1.8479206315888552459" resolveInfo="ObjectDefn" />
                  </node>
                </node>
              </node>
              <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="2118074201061923362">
                <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2118074201061923363">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2118074201061923364">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2118074201061923365">
                      <property name="name" value="objectClass2" />
                      <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2118074201061923366">
                        <link role="concept" targetNodeId="1.8479206315889563127" resolveInfo="ObjectClass" />
                      </node>
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2118074201061923369">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="2118074201061923368">
                          <link role="variableDeclaration" targetNodeId="2103069454648604121" resolveInfo="object" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="2118074201061923404">
                          <link role="baseMethodDeclaration" targetNodeId="2v.2118074201061923376" resolveInfo="resolveObjectClass" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="2118074201061923408">
                    <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="2118074201061923412">
                      <node role="normalType" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2118074201061923413">
                        <link role="variableDeclaration" targetNodeId="2118074201061923365" resolveInfo="class" />
                      </node>
                    </node>
                    <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="2118074201061923411">
                      <node role="normalType" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="2118074201061923407">
                        <link role="variableDeclaration" targetNodeId="2103069454648604119" resolveInfo="objectClass" />
                      </node>
                    </node>
                    <node role="nodeToCheck" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="4529807355381998181">
                      <link role="variableDeclaration" targetNodeId="2103069454648604121" resolveInfo="object" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="6366208545134222462">
            <node role="rightExpression" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="6366208545134222465">
              <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
              <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="6366208545134222466">
                <link role="variableDeclaration" targetNodeId="2103069454648604121" resolveInfo="object" />
              </node>
            </node>
            <node role="leftExpression" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="6366208545134222460">
              <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
              <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="6366208545134222461">
                <link role="variableDeclaration" targetNodeId="2103069454648604119" resolveInfo="objectClass" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" id="2103069454648604119">
        <property name="name" value="objectClass" />
        <property name="isFinal" value="true" />
        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2103069454648604120">
          <link role="concept" targetNodeId="1.8479206315889563127" resolveInfo="ObjectClass" />
        </node>
      </node>
      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" id="2103069454648604121">
        <property name="name" value="object" />
        <property name="isFinal" value="true" />
        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2103069454648604123">
          <link role="concept" targetNodeId="1.8479206315888459466" resolveInfo="Object" />
        </node>
      </node>
      <node role="annotation" type="jetbrains.mps.baseLanguage.structure.AnnotationInstance" id="2103069454648604125">
        <link role="annotation" targetNodeId="4v.1196177069451" resolveInfo="InferenceMethod" />
      </node>
    </node>
    <node role="staticMethod" type="jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration" id="6366208545134351741">
      <property name="name" value="checkValue" />
      <node role="visibility" type="jetbrains.mps.baseLanguage.structure.PublicVisibility" id="6366208545134351743" />
      <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="6366208545134351744">
        <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="6366208545134351750">
          <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="6366208545134351756">
            <node role="rightExpression" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="6366208545134351759">
              <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
              <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="6366208545134351760">
                <link role="variableDeclaration" targetNodeId="6366208545134351747" resolveInfo="value" />
              </node>
            </node>
            <node role="leftExpression" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="6366208545134351753">
              <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
              <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="6366208545134351754">
                <link role="variableDeclaration" targetNodeId="6366208545134351745" resolveInfo="type" />
              </node>
            </node>
          </node>
          <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="6366208545134351752">
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="9064566900103192898">
              <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="9064566900103192899">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4529807355382068548">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4529807355382068549">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="4529807355382068550">
                      <link role="variableDeclaration" targetNodeId="6366208545134351745" resolveInfo="type" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4529807355382068551">
                      <link role="baseMethodDeclaration" targetNodeId="2v.2118074201061862624" resolveInfo="validateValue" />
                      <node role="actualArgument" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="4529807355382068552">
                        <link role="concept" targetNodeId="1.5430715052354199799" resolveInfo="BuiltinValue" />
                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="4529807355382068553">
                          <link role="variableDeclaration" targetNodeId="6366208545134351747" resolveInfo="value" />
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="4529807355382068524">
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4529807355382068527">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4529807355382068530">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="4529807355382068529">
                      <link role="variableDeclaration" targetNodeId="6366208545134351747" resolveInfo="value" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4529807355382068534">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4529807355382068536">
                        <link role="conceptDeclaration" targetNodeId="1.1678051738094101648" resolveInfo="ValueFromObject" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="9064566900103192907">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="9064566900103192905">
                    <link role="variableDeclaration" targetNodeId="6366208545134351747" resolveInfo="value" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="9064566900103192912">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="7487590260010165791">
                      <link role="conceptDeclaration" targetNodeId="1.5430715052354199799" resolveInfo="BuiltinValue" />
                    </node>
                  </node>
                </node>
              </node>
              <node role="elsifClauses" type="jetbrains.mps.baseLanguage.structure.ElsifClause" id="7487590260010165798">
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="4529807355382068537">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4529807355382068541">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="4529807355382068540">
                      <link role="variableDeclaration" targetNodeId="6366208545134351747" resolveInfo="value" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="4529807355382068545">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="4529807355382068547">
                        <link role="conceptDeclaration" targetNodeId="1.1678051738094101648" resolveInfo="ValueFromObject" />
                      </node>
                    </node>
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7487590260010165860">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="7487590260010165858">
                      <link role="variableDeclaration" targetNodeId="6366208545134351747" resolveInfo="value" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="7487590260010165865">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="7487590260010165868">
                        <link role="conceptDeclaration" targetNodeId="1.3272396464466721158" resolveInfo="ReferencedValue" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statementList" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7487590260010165800">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="7487590260010165880">
                    <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="7487590260010165881">
                      <property name="name" value="valueType" />
                      <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7487590260010165882">
                        <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                      </node>
                      <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7487590260010165899">
                        <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="7487590260010165892">
                          <link role="concept" targetNodeId="1.3272396464466721158" resolveInfo="ReferencedValue" />
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="7487590260010165890">
                            <link role="variableDeclaration" targetNodeId="6366208545134351747" resolveInfo="value" />
                          </node>
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="7487590260010165904">
                          <link role="baseMethodDeclaration" targetNodeId="2v.7487590260009842906" resolveInfo="resolveType" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="7487590260010165909">
                    <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7487590260010165914">
                      <node role="normalType" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="7487590260010165915">
                        <link role="variableDeclaration" targetNodeId="7487590260010165881" resolveInfo="valueType" />
                      </node>
                    </node>
                    <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7487590260010165912">
                      <node role="normalType" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="7487590260010165907">
                        <link role="variableDeclaration" targetNodeId="6366208545134351745" resolveInfo="type" />
                      </node>
                    </node>
                    <node role="nodeToCheck" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="1846567323594838801">
                      <link role="variableDeclaration" targetNodeId="6366208545134351747" resolveInfo="value" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" id="6366208545134351745">
        <property name="name" value="type" />
        <property name="isFinal" value="true" />
        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="6366208545134351746">
          <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
        </node>
      </node>
      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" id="6366208545134351747">
        <property name="name" value="value" />
        <property name="isFinal" value="true" />
        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="6366208545134351749">
          <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="ASNValue" />
        </node>
      </node>
      <node role="annotation" type="jetbrains.mps.baseLanguage.structure.AnnotationInstance" id="6366208545134351770">
        <link role="annotation" targetNodeId="4v.1196177069451" resolveInfo="InferenceMethod" />
      </node>
      <node role="returnType" type="jetbrains.mps.baseLanguage.structure.VoidType" id="6366208545136955965" />
    </node>
    <node role="staticMethod" type="jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration" id="7487590260010482066">
      <property name="name" value="applyValueConstraint" />
      <node role="returnType" type="jetbrains.mps.baseLanguage.structure.VoidType" id="7487590260010482067" />
      <node role="visibility" type="jetbrains.mps.baseLanguage.structure.PublicVisibility" id="7487590260010482068" />
      <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7487590260010482069" />
      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" id="7487590260010482070">
        <property name="name" value="valueSet" />
        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7487590260010482071">
          <link role="concept" targetNodeId="1.1678051738085357820" resolveInfo="ValueSet" />
        </node>
      </node>
      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" id="7487590260010482072">
        <property name="name" value="value" />
        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="7487590260010482074">
          <link role="concept" targetNodeId="1.5430715052354187086" resolveInfo="ASNValue" />
        </node>
      </node>
      <node role="annotation" type="jetbrains.mps.baseLanguage.structure.AnnotationInstance" id="7487590260010482075">
        <link role="annotation" targetNodeId="4v.1196177069451" resolveInfo="InferenceMethod" />
      </node>
    </node>
    <node role="visibility" type="jetbrains.mps.baseLanguage.structure.PublicVisibility" id="2103069454648604110" />
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="8600224617540038688">
    <property name="name" value="typeof_ObjectElement" />
    <property name="package" value="ObjectSet.ObjectSetElement" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617540038689">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8600224617540038695">
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617540038697">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617540080109">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617540080110">
              <property name="name" value="typeProvider" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8600224617540080111">
                <link role="concept" targetNodeId="1.4534048328793079724" resolveInfo="ITypeProvider" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540080114">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617540080113">
                  <link role="applicableNode" targetNodeId="8600224617540038690" resolveInfo="objectElement" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="8600224617540080118">
                  <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="8600224617540080119">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8600224617540080122">
                      <link role="conceptDeclaration" targetNodeId="1.4534048328793079724" resolveInfo="ITypeProvider" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617540150521">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617540150522">
              <property name="name" value="objectClass" />
              <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8600224617540150523">
                <link role="concept" targetNodeId="1.8479206315889563127" resolveInfo="ObjectClass" />
              </node>
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.NullLiteral" id="8600224617540150525" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617540080138">
            <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617540080139">
              <property name="name" value="foundWithinType" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.BooleanType" id="8600224617540080140" />
              <node role="initializer" type="jetbrains.mps.baseLanguage.structure.BooleanConstant" id="8600224617540080142">
                <property name="value" value="false" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8600224617540080124">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617540080125">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617540080134">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617540080135">
                  <property name="name" value="type" />
                  <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8600224617540080136">
                    <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
                  </node>
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540080155">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540080154">
                      <link role="variableDeclaration" targetNodeId="8600224617540080110" resolveInfo="typeProvider" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="8600224617540080159">
                      <link role="baseMethodDeclaration" targetNodeId="2v.4534048328793079732" resolveInfo="getType" />
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8600224617540080161">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617540080162">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8600224617540150526">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="8600224617540150528">
                      <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540150534">
                        <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="8600224617540150532">
                          <link role="concept" targetNodeId="1.8492289956116483184" resolveInfo="ObjectClassFieldType" />
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150531">
                            <link role="variableDeclaration" targetNodeId="8600224617540080135" resolveInfo="type" />
                          </node>
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8600224617540150538">
                          <link role="link" targetNodeId="1.8492289956116483185" />
                        </node>
                      </node>
                      <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150527">
                        <link role="variableDeclaration" targetNodeId="8600224617540150522" resolveInfo="objectClass" />
                      </node>
                    </node>
                  </node>
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8600224617540150540">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="8600224617540150542">
                      <node role="rValue" type="jetbrains.mps.baseLanguage.structure.BooleanConstant" id="8600224617540150545">
                        <property name="value" value="true" />
                      </node>
                      <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150541">
                        <link role="variableDeclaration" targetNodeId="8600224617540080139" resolveInfo="foundWithinType" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540150513">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150512">
                    <link role="variableDeclaration" targetNodeId="8600224617540080135" resolveInfo="type" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="8600224617540150517">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8600224617540150519">
                      <link role="conceptDeclaration" targetNodeId="1.8492289956116483184" resolveInfo="ObjectClassFieldType" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540080129">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540080128">
                <link role="variableDeclaration" targetNodeId="8600224617540080110" resolveInfo="typeProvider" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="8600224617540080133" />
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8600224617540150546">
            <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617540150547">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8600224617540150554">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8600224617540150555">
                  <property name="name" value="classProvider" />
                  <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="8600224617540150556">
                    <link role="concept" targetNodeId="1.4534048328793067510" resolveInfo="IObjectClassProvider" />
                  </node>
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540150557">
                    <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617540150558">
                      <link role="applicableNode" targetNodeId="8600224617540038690" resolveInfo="objectElement" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="8600224617540150559">
                      <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="8600224617540150560">
                        <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="8600224617540150561">
                          <link role="conceptDeclaration" targetNodeId="1.4534048328793067510" resolveInfo="IObjectClassProvider" />
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="8600224617540150562">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617540150563">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8600224617540150588">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="8600224617540150590">
                      <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540150594">
                        <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150598">
                          <link role="variableDeclaration" targetNodeId="8600224617540150555" resolveInfo="classProvider" />
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="8600224617540150599">
                          <link role="baseMethodDeclaration" targetNodeId="2v.4534048328793067519" resolveInfo="getObjectClass" />
                        </node>
                      </node>
                      <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150589">
                        <link role="variableDeclaration" targetNodeId="8600224617540150522" resolveInfo="objectClass" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540150576">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150600">
                    <link role="variableDeclaration" targetNodeId="8600224617540150555" resolveInfo="classProvider" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="8600224617540150578" />
                </node>
              </node>
            </node>
            <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="8600224617540150551">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150550">
                <link role="variableDeclaration" targetNodeId="8600224617540080139" resolveInfo="foundWithinType" />
              </node>
            </node>
          </node>
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.Statement" id="8600224617540150579" />
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8600224617540150581">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="8600224617540150582">
              <link role="classConcept" targetNodeId="2103069454648604109" resolveInfo="CheckingRules" />
              <link role="baseMethodDeclaration" targetNodeId="2103069454648604115" resolveInfo="checkObject" />
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8600224617540150583">
                <link role="variableDeclaration" targetNodeId="8600224617540150522" resolveInfo="objectClass" />
              </node>
              <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540150584">
                <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617540150585">
                  <link role="applicableNode" targetNodeId="8600224617540038690" resolveInfo="objectElement" />
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8600224617540150586">
                  <link role="link" targetNodeId="1.8600224617539654165" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="condition" type="jetbrains.mps.lang.smodel.structure.StaticConceptMethodCall" id="8600224617540038703">
          <link role="concept" targetNodeId="1.5430715052355428915" resolveInfo="IAssignmentEntity" />
          <link role="baseMethodDeclaration" targetNodeId="2v.6366208545133894258" resolveInfo="isNotNullOrAbstract" />
          <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8600224617540038705">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8600224617540038704">
              <link role="applicableNode" targetNodeId="8600224617540038690" resolveInfo="objectElement" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8600224617540038709">
              <link role="link" targetNodeId="1.8600224617539654165" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8600224617540038690">
      <property name="name" value="objectElement" />
      <link role="concept" targetNodeId="1.8600224617539654163" resolveInfo="ObjectElement" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="8600224617541097823">
    <property name="package" value="ObjectClass.WithSyntaxSpecification" />
    <property name="name" value="ObjectClassIncludesSimpleDefinedObject" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8600224617541097828">
      <property name="name" value="simpleDefinedObject" />
      <link role="concept" targetNodeId="1.1161031609608555578" resolveInfo="SimpleDefinedObject" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8600224617541097825">
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="2118074201061923606">
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="2118074201061923610">
          <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2118074201061923617">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2118074201061923612">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2118074201061923611">
                <link role="applicableNode" targetNodeId="8600224617541097828" resolveInfo="simpleDefinedObject" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2118074201061923616">
                <link role="link" targetNodeId="1.1161031609608567771" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2118074201061923621">
              <link role="link" targetNodeId="1.9152698315526579980" />
            </node>
          </node>
        </node>
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="2118074201061923609">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="2118074201061923605">
            <link role="applicableNode" targetNodeId="8600224617541097827" resolveInfo="objectClass" />
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="8600224617541097827">
      <property name="name" value="objectClass" />
      <link role="concept" targetNodeId="1.8479206315889563127" resolveInfo="ObjectClass" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="7487590260011097187">
    <property name="package" value="BuiltinType" />
    <property name="name" value="ASNTypeIncludesSimpleDefinedType" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="7487590260011097192">
      <property name="name" value="simpleDefinedType" />
      <link role="concept" targetNodeId="1.1161031609608070240" resolveInfo="SimpleDefinedType" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7487590260011097189">
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="7487590260011097195">
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7487590260011097198">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7487590260011097194">
            <link role="applicableNode" targetNodeId="7487590260011097191" resolveInfo="type" />
          </node>
        </node>
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7487590260011097199">
          <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7487590260011097206">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7487590260011097201">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7487590260011097200">
                <link role="applicableNode" targetNodeId="7487590260011097192" resolveInfo="simpleDefinedType" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="7487590260011097205">
                <link role="link" targetNodeId="1.1161031609608070242" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="7487590260011097210">
              <link role="link" targetNodeId="1.9087026269843019313" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="7487590260011097191">
      <property name="name" value="type" />
      <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="4529807355381842674">
    <property name="package" value="BuiltinType" />
    <property name="name" value="SimpleDefinedTypeIncludesASNType" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4529807355381842679">
      <property name="name" value="type" />
      <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4529807355381842676">
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateLessThanInequationStatement" id="4529807355381842692">
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="4529807355381842696">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4529807355381842697">
            <link role="applicableNode" targetNodeId="4529807355381842679" resolveInfo="type" />
          </node>
        </node>
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="4529807355381842695">
          <node role="normalType" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4529807355381842687">
            <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4529807355381842682">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4529807355381842681">
                <link role="applicableNode" targetNodeId="4529807355381842678" resolveInfo="simpleDefinedType" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4529807355381842686">
                <link role="link" targetNodeId="1.1161031609608070242" />
              </node>
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="4529807355381842691">
              <link role="link" targetNodeId="1.9087026269843019313" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4529807355381842678">
      <property name="name" value="simpleDefinedType" />
      <link role="concept" targetNodeId="1.1161031609608070240" resolveInfo="SimpleDefinedType" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InequationReplacementRule" id="4529807355382100598">
    <property name="package" value="BuiltinType" />
    <property name="name" value="ASNType" />
    <node role="supertypeNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4529807355382100603">
      <property name="name" value="type2" />
      <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
    </node>
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4529807355382100600">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="4529807355382100606">
        <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="4529807355382100609">
          <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4529807355382100612">
            <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4529807355382100611">
              <link role="applicableNode" targetNodeId="4529807355382100602" resolveInfo="choiceType" />
            </node>
            <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="4529807355382100616">
              <link role="baseMethodDeclaration" targetNodeId="2v.4208300936830270184" resolveInfo="isEqual" />
              <node role="actualArgument" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4529807355382100617">
                <link role="applicableNode" targetNodeId="4529807355382100603" resolveInfo="choiceType2" />
              </node>
            </node>
          </node>
        </node>
        <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4529807355382100608">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="4529807355382100618">
            <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4529807355382203172">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ErrorInfoExpression" id="4529807355382203171" />
              <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="4529807355382203493">
                <link role="baseMethodDeclaration" targetNodeId="7.~EquationInfo.getNodeWithError():jetbrains.mps.smodel.SNode" resolveInfo="getNodeWithError" />
              </node>
            </node>
            <node role="errorString" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="4529807355382376085">
              <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="4529807355382376084">
                <link role="applicableNode" targetNodeId="4529807355382100603" resolveInfo="type2" />
              </node>
              <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="4529807355382376088">
                <property name="value" value=" unexpected" />
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="4529807355382100602">
      <property name="name" value="type" />
      <link role="concept" targetNodeId="1.1048767958318497761" resolveInfo="ASNType" />
    </node>
  </node>
</model>

